我制作了一个自定义组合框,其中我有一个TextBlock(名为mySelectedContent)来显示所选项目和一个TextBox以便在“IsEditable”模式下进行编辑。我有一个正确拍摄的MultiDataTrigger,但是,我无法“捕获”所选项目的文本并将其放入TextBlock。应该如何安装正确的表达来代替“???”。非常感谢!
这是触发器的代码(我主要显示触发器的一部分,因为它只是问题所在):
<ComboBox.Resources>
<Style x:Key="myComboBox" TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
<ToggleButton>
...
</ToggleButton>
<TextBlock
Name="mySelectedContent"
.../>
<TextBox x:Name="myEditableTextBox"
.../>
<Popup>
...
</Popup>
</Grid>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
...
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter TargetName="myEditableTextBox" Property="Visibility" Value="Hidden"/>
<Setter TargetName="mySelectedContent" Property="Visibility" Value="Visible"/>
<Setter TargetName="mySelectedContent" Property="Text" Value="???"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ComboBox.Resources>
答案 0 :(得分:0)
用cYounes的第一个建议解决了这个问题。我用过:
Value = {Binding ElementName = MyEditableTextBox Path = Text}
它按预期工作!
谢谢!
答案 1 :(得分:0)
如果您只是使用Tag属性可以轻松地使用2行来获取值,那就太麻烦了:
在XAML中:
<ComboBoxItem Content="This Value" Tag="This Value"/>
然后:
GetValue=ComboBoxName.SelectedItem.Tag.ToString()
会给你&#34;这个价值&#34;并不是 &#34; System.Windows.Controls.ComboBoxItem:此值&#34;
更简单,更快速,更省时。