【问题标题】:Adding a dependency property to a text box向文本框添加依赖属性
【发布时间】:2012-07-13 00:02:54
【问题描述】:

如何将依赖属性添加到文本框并将依赖属性绑定到布尔属性。我的布尔属性在我的视图模型中。

ImageSearchIsFocused 是允许我将焦点设置在文本框上的属性。

<TextBox  Text="{Binding ImgSearch, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">   
    <i:Interaction.Behaviors>
        <common:FocusBehavior HasInitialFocus="True" IsFocused="{Binding ImageSearchIsFocused, Mode=TwoWay}" ></common:FocusBehavior>
    </i:Interaction.Behaviors>
</TextBox>

ImageIsFocused 属性

bool _ImageSearchIsFocused;
public bool ImageSearchIsFocused
{
    get { return _ImageSearchIsFocused; }
    set
    { 
        _ImageSearchIsFocused = value;
        NotifyPropertyChanged("ImageSearchIsFocused");
    }
}

【问题讨论】:

  • 你要添加的依赖属性是什么?您的示例仅显示附加行为。你能展示你的代码吗(例如行为?)
  • @HiTech Magic 这就是我关注的jklogic.blogspot.com/2012/02/…
  • 这有帮助。您的 ImageSearchIsFocused 属性的代码是什么样的?
  • 这是否发生在应用程序启动时?如果是这样,您的 Silverlight 应用程序默认不会获得焦点,因此如果没有额外的工作,控件焦点将不可见:stackoverflow.com/questions/4107460/…

标签: silverlight xaml mvvm dependency-properties


【解决方案1】:

如果你想添加一个依赖属性,你将拥有 TextBox 的子类并将依赖属性添加到你的子类中。然后你可以把它绑定到你喜欢的任何东西上:

public class MyTextBox : TextBox
{ 

    public static readonly DependencyProperty MyBooleanValueProperty = DependencyProperty.Register(
        "MyBooleanValue", typeof(bool), typeof(MyTextBox),
        new PropertyMetadata(new PropertyChangedCallback(MyBooleanValueChanged)));
    public bool MyBooleanValue
    {
        get { return (bool)GetValue(MyBooleanValueProperty); }
        set { SetValue(MyBooleanValueProperty, value); }
    }

    private static void MyBooleanValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var propValue = (bool)e.NewValue;
        var control = d as MyTextBox;

        // do something useful
    }

}

【讨论】:

  • 您不必将一个 TextBox 子类化为它添加一个新的依赖属性。您可以将任何新的 DependencyProperty 添加到任何 DependencyObject 派生类,只要 typeof 匹配即可。
猜你喜欢
  • 2023-03-10
  • 2013-03-26
  • 2019-11-26
  • 2011-09-21
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多