第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 XAML 樣式模板綁定到另一個對象屬性?

如何使用 XAML 樣式模板綁定到另一個對象屬性?

C#
繁星淼淼 2022-11-21 20:24:04
假設(shè)我有以下課程:public class MyClass : System.Windows.FrameworkElement{    public static readonly DependencyProperty HasFocusProperty = DependencyProperty.RegisterAttached("HasFocus", typeof(bool), typeof(MyClass), new PropertyMetadata(default(bool)));    public bool HasFocus    {        get => (bool)GetValue(HasFocusProperty);        set => SetValue(HasFocusProperty, value);    }    public System.Windows.Controls.TextBox TextBox { get; set; }}我想根據(jù) property 更改TextBoxvia XAML Template Trigger 的一些 UI 屬性HasFocus,所以我執(zhí)行以下操作:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:win="clr-namespace:System.Windows.Controls">    <Style TargetType="{x:Type win:TextBox}">        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="{x:Type win:TextBox}">                    <ControlTemplate.Triggers>                        <Trigger Property="MyClass.HasFocus" Value="True">                            <Setter TargetName="Border" Property="BorderBrush" Value="Red" />                            <Setter TargetName="Border" Property="BorderThickness" Value="2" />                        </Trigger>                    </ControlTemplate.Triggers>                </ControlTemplate>            </Setter.Value>        </Setter>    </Style> </ResourceDictionary>但是,設(shè)置時不應(yīng)用樣式HasFocus = true。在 的屬性中TextBox,我可以看到觸發(fā)器已注冊。如果我更改<Trigger Property="MyClass.HasFocus" Value="True">為<Trigger Property="MyClass.HasFocus" Value="False">,則最初會應(yīng)用我的樣式。所以我認(rèn)為我的 XAML 定義沒問題。任何想法如何解決這個問題?
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗 獲得超16個贊

應(yīng)用于 a 的模板中的元素TextBox不能綁定到 a 的屬性MyClass,除非有一個MyClass元素可以綁定到可視化樹中的某處。


如果您希望能夠設(shè)置 a 的自定義HasFocus屬性TextBox,您應(yīng)該創(chuàng)建一個附加屬性:


public class FocusExtensions

{

    public static readonly DependencyProperty SetHasFocusProperty = DependencyProperty.RegisterAttached(

        "HasFocus",

        typeof(bool),

        typeof(FocusExtensions),

        new FrameworkPropertyMetadata(false)

    );


    public static void SetHasFocus(TextBox element, bool value)

    {

        element.SetValue(SetHasFocusProperty, value);

    }


    public static bool GetHasFocus(TextBox element)

    {

        return (bool)element.GetValue(SetHasFocusProperty);

    }

}

它可以為任何TextBox元素設(shè)置:


<TextBox local:FocusExtensions.HasFocus="True">

    <TextBox.Style>

        <Style TargetType="{x:Type TextBox}">

            <Style.Triggers>

                <Trigger Property="local:FocusExtensions.HasFocus" Value="True">

                    <Setter Property="BorderBrush" Value="Red" />

                    <Setter Property="BorderThickness" Value="2" />

                </Trigger>

            </Style.Triggers>

        </Style>

    </TextBox.Style>

</TextBox>


查看完整回答
反對 回復(fù) 2022-11-21
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號