WPF ComboBox选择了项目文本

时间:2014-09-30 20:04:19

标签: wpf

我制作了一个自定义组合框,其中我有一个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>

2 个答案:

答案 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;

更简单,更快速,更省时。