代码之家  ›  专栏  ›  技术社区  ›  Ronald Wildenberg

基于视图模型属性更新的Silverlight行为

  •  2
  • Ronald Wildenberg  · 技术社区  · 15 年前

    我希望有一个Silverlight行为,它是由我的页面的视图模型中的属性更改触发的。不过,我不知道该怎么做。

    所以,我有一个非常简单的视图模型:

    public class MyViewModel : INotifyPropertyChanged
    {
        private bool changingProperty;
        public bool ChangingProperty
        {
            get { return changingProperty; }
            set
            {
                if (changingProperty != value)
                {
                    changingProperty = value;
                    NotifyPropertyChanged("ChangingProperty");
                }
            }
        }
        public string SomeProperty { get { return "SomePropertyValue"; } }
    
        // INotifyPropertyChanged implementation here.......
    }
    

    此视图模型是绑定了文本块的用户控件的数据上下文 SomeProperty 以下内容:

    <TextBlock x:Key="myTextBlock" Text="{Binding SomeProperty}" />
    

    这一切都很好。现在我想附加一个行为 myTextBlock 这是由 ChangingProperty 在我的视图模型中。该行为应突出显示 TextBlock 例如(或更复杂的东西)。

    如何指定此触发器?这有可能吗?

    亲切的问候,

    罗纳德

    1 回复  |  直到 13 年前
        1
  •  1
  •   Community Michael Schmitz    7 年前

    类似问题的答案 here 可能会有所帮助。

    下面是一个示例,说明如何将该技术应用于您的需求。

    <Grid.Resources>
       <local:BoolToBrushConverter x:Key="Highlighter"
        FalseBrush="Transparent" TrueBrush="Yellow" />
    </Grid.Resources>
    
    <Border Background="{Binding ChangingProperty, Converter={StaticResource Highlighter}}">
        <TextBlock x:Name="txtTarget" Text="{Binding SomeProperty}" />
    </Border>