【发布时间】:2013-10-21 06:50:31
【问题描述】:
我有一个带有依赖属性的自定义控件,定义如下:
public class TemplatedTextBox : TextBox
{
public static readonly DependencyProperty SearchStringProperty =
DependencyProperty.Register("SearchString", typeof(string), typeof(TemplatedTextBox), new UIPropertyMetadata(string.Empty));
public string SearchString
{
get { return (string)GetValue(SearchStringProperty); }
set { SetValue(SearchStringProperty, value); }
}
}
我使用以下控件模板:
<WpfApp:TemplatedTextBox>
<WpfApp:TemplatedTextBox.Template>
<ControlTemplate TargetType="{x:Type WpfApp:TemplatedTextBox}">
<StackPanel Height="20" Orientation="Horizontal">
<TextBlock Text="Search String :"/>
<TextBox x:Name="SearchTextBox" Width="200" Text="NEED TO BE BINDED TO SearchString!"/>
</StackPanel>
</ControlTemplate>
</WpfApp:TemplatedTextBox.Template>
</WpfApp:TemplatedTextBox>
我想以OneWayToSource 或TwoWay 绑定模式将SearchTextBox 的Text 属性绑定到我的SearchString 属性。
我试过了:
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SearchString, Mode=OneWayToSource}"
什么都不做。
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SearchString, Mode=TwoWay}"
和
Text="{TemplateBinding SearchString}"
当我以编程方式更改SearchString Text 上的TextBox 更改时,这在一个方向上效果很好,但在另一个方向上效果不佳
我也尝试过将SearchString 设为常规属性,并在各种Modes 中使用RelativeSource 绑定它,但它不起作用。
这是在常规 View-to-ViewModel 绑定中非常简单的事情,那么我在这里缺少什么?
【问题讨论】:
标签: c# wpf data-binding custom-controls