Jer*_*xon 4 c# xaml windows-8 winrt-xaml windows-store-apps
在Windows应用商店应用中,您可以创建用户控件来封装和重用代码隐藏和布局XAML.简单的用户控件可能如下所示:
<UserControl>
<StackPanel>
<TextBlock Text="First Name" />
<TextBox x:Name="MyTextBox" />
</StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
现在,我想设置绑定.因此,我创建了代码隐藏,其属性公开了UI控件的Text属性.像这样的东西:
public string TextBoxText
{
get { return MyTextBoxText.Text; }
set { MyTextBoxText.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.似乎绑定到用户控件的数据是XAML UI的重要组成部分.但它是如何完成的?
Jer*_*xon 10
用户控件中只有一个属性实现支持在使用页面中进行绑定.这是一个依赖属性.实现很简单,但您还必须包含已更改的事件以直接与UI交互,因为依赖项属性是控件上的静态属性.像这样:
public string TextBoxText
{
get { return (string)GetValue(TextBoxTextProperty); }
set { SetValue(TextBoxTextProperty, value); }
}
public static readonly DependencyProperty TextBoxTextProperty =
DependencyProperty.Register("TextBoxText", typeof(string), typeof(MyUserControl),
new PropertyMetadata(string.Empty, OnTextBoxTextPropertyChanged));
private static void OnTextBoxTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
(d as MyUserControl).MyTextBox.Text = e.NewValue.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我承认,这不是很明显.但希望现在您知道,这将节省您数小时的搜索并试图找出答案.同样,您只能绑定到用户控件的依赖项属性.而且,您只能使用更改的事件从静态线程设置UI值.
祝你好运!
| 归档时间: |
|
| 查看次数: |
3080 次 |
| 最近记录: |