如何通过绑定转换器引用TreeViewItem中的另一个控件?

时间:2013-02-28 06:32:17

标签: wpf binding converter

我想在同一个TreeViewItemContainer中绑定基于TextBox的SelectedItem的ComboBox的可见性。我想我可以使用转换器进行绑定,但我不知道如何将ComboBox项作为TextBox绑定的参数发送。可以这样做吗?

<TreeView>
    <TreeView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <ComboBox Margin="2,0" Name="SkillSelectCB" ItemsSource="{Binding PotentialChildren}" />
                <TextBox Margin="2,0" Width="50" Visibility="{Binding ??}" />
                <Button Margin="2,0" Content="Add" />
            </StackPanel>
        </DataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

这实际上是在HierarchicalDataTemplate中,上面的例子非常小。 “添加”Button会根据TreeView中选择的内容将新子项添加到ComboBox的ViewModel中。可见性是TextBox将根据ComboBox的SelectedItem的某些属性而发生变化。

1 个答案:

答案 0 :(得分:0)

所以TextBox的Xaml:

<TextBox Margin="2,0"Width="50" Visibility="{Binding SelectedItem, ElementName=SkillSelectCB, Converter={StaticResource SkillToVisibilityConverter}}" />

转换器:

public class SkillToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = (Skill)value;
        return (s == null || !s.Specialized) ? "Hidden" : "Visible";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}