У меня есть объект TreeView, привязанный к DataSet. Внутри TreeView.ItemTemplate я использую HierarchicalDataTemplate, содержащий элементы управления, которые я выполняю.Binding BooleanToVisibilityConverter для элемента управления в TreeView HierarchicalDataTemplate
Кто-нибудь знает, как изменить свойство видимости элемента управления внутри HierarchicalDataTemplate? Я попытался использовать BooleanToVisibilityConverter из платформы .NET, но не могу заставить привязку работать правильно.
Логическая переменная в моей модели ViewModel с именем «moveButtonVisibility» привязана к свойству «Видимость» кнопки в моем XAML. Затем BooleanToVisibilityConverter пытается преобразовать соответствующее логическое значение (true/false) в значение Видимость (видимое/скрытое). "moveButtonVisibility" не является частью ItemSource TreeView.
Упомянутая ниже версия моего кода показана ниже. Я удалил весь код в моем XAML для управления Button "MoveHereButton", что я хочу, чтобы изменить свойство видимости на исключении:
ViewModel (C#):
private bool _moveButtonVisibility;
public bool moveButtonVisibility
{
get { return _moveButtonVisibility; }
set
{
_moveButtonVisibility = value;
RaiseChange("moveButtonVisibility");
}
}
VIEW (XAML):
<Page>
<Page.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter"/>
</Page.Resources>
<Grid HorizontalAlignment="Center" VerticalAlignment="Top">
<TreeView HorizontalAlignment="Center" x:Name="treeView1" VerticalAlignment="Top" ItemsSource="{Binding Path=rsParentChild}" Background="Transparent" BorderThickness="0" BorderBrush="Transparent" >
<TreeView.ItemContainerStyle>
<Style>
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=rsParentChild, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<Grid Focusable="False" Margin="5,10,5,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Name="MoveHereButton" Content="Move Here" Visibility="{Binding DataContext.moveButtonVisibility, Converter={StaticResource visibilityConverter}}" Click="MoveHereButton_Click" />
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</Page>
* Кто-нибудь знает, как изменить свойство видимости элемента управления внутри HierarchicalDataTemplate? * ... да ... вы делаете это так же, как и с любым другим элементом управления. Проверьте свое 'Binding', добавив' TextBlock' следующим образом: '
Sheridan
Кажется, это не так прямо. Я получаю следующую ошибку: System. Ошибка в Windows.Data: 40: Ошибка пути BindingExpression: свойство 'moveButtonVisibility' не найдено в 'object' '' DataView '(HashCode = 59215815)'. BindingExpression: Path = DataContext.moveButtonVisibility; DataItem = 'TreeView' (Name = 'treeView1 '), целевой элемент - «Button» (Name =' MoveHereButton '); целевое свойство - «Видимость» (тип «Видимость») –
Это точно * прямое. У вас явно была ошибка 'Binding'. – Sheridan