使用xaml创建GUI时,我创建了一个带有如下标记的文本框:
<TextBox Name="TextBox" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="216,178,143,120" Width="158"
Tag="myTag"/>
现在我想让用户能够更改此标记。为此,我正在寻找一种形式的功能:
TextBox.SetTag( "User Provided Tag" )
这样标签可以改成这个:
<TextBox Name="TextBox" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="216,178,143,120" Width="158"
Tag="User Provided Tag"/>
在网上搜索了一段时间后,我没有想出任何实际的解决方案。有人可以帮忙吗?谢谢。
答案 0 :(得分:2)
您可以使用两个控件之间的绑定。假设允许用户输入TextBox
的标记值。您只需将第二个Tag
的{{1}}绑定到第一个TextBox
的{{1}}属性:
Text
为了测试它我在我的XAML中添加了TextBox
:
<TextBox Name="enterTagTextBox" />
<TextBox Name="getTagTextBox" Tag="{Binding ElementName=enterTagTextBox, Path=Text}"/>
在后面的代码中,我只需检索标记值并显示如下:
Button
答案 1 :(得分:2)
我认为您的问题可能源于您命名TextBox,&#34; TextBox&#34;。尝试给它一个不与类名冲突的名称,例如&#34; txtMyTextBox&#34;。
然后你可以做txtMyTextBox.Tag = "User Provided Tag";
。
或者你可以像PiotrWolkowski建议的那样绑定它。
但是,我想补充一点,似乎应该有一种更清洁的方式来实现你想要的行为。需要注意的是,我不知道您要实施的细节。
我强烈建议您创建一个ViewModel(请参阅:MVVM Pattern)来保存您希望用户能够编辑的数据。然后使用WPF中的绑定来显示数据。
答案 2 :(得分:1)
您需要使用属性元素用法,以便将可扩展应用程序标记语言(XAML)中的Tag属性设置为具有已知和内置类型转换器的对象以外的任何内容,例如字符串。