2013-02-28 22 views
0

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

<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,上面的例子中是很小的。根据ComboBox中选择的内容,“Add”Button将为TreeView的ViewModel添加新的子项。可见性是TextBox将根据ComboBox的SelectedItem的某些属性而变化。

+0

那你试试?你应该发布你的代码... – makc 2013-02-28 08:39:19

+0

@makc我不知道该怎么尝试。我认为这可以用转换器完成,但我似乎无法在任何地方找到示例。如果有帮助,我已将Xaml包含在“TreeView”中。 – 2013-02-28 16:11:31

+0

@makc啊,没关系我知道了,这比我想象的容易,昨晚我一定累得太累了。 – 2013-02-28 16:29:43

回答

0

所以XAML中为TextBox

<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(); 
    } 
} 
相关问题