C# 绑定到SelectedItem的按钮可见性
我在装订方面有点问题。我想用列表框的SelectedItem绑定2个按钮C# 绑定到SelectedItem的按钮可见性,c#,xaml,binding,visibility,C#,Xaml,Binding,Visibility,我在装订方面有点问题。我想用列表框的SelectedItem绑定2个按钮 列表框包含多个值,并显示它们的名称、年龄等,。。。。当用户选择列表框的一个条目时,两个按钮“删除”和“更改”应弹出尝试将可见性绑定到MySelectedListView。这是列表框的选定项绑定到的ViewModels属性。那么该值应该是正确的类型 <Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row
列表框包含多个值,并显示它们的名称、年龄等,。。。。当用户选择列表框的一个条目时,两个按钮“删除”和“更改”应弹出尝试将可见性绑定到MySelectedListView。这是列表框的选定项绑定到的ViewModels属性。那么该值应该是正确的类型
<Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row="0" Content="Delete" Visibility="{Binding Path=MySelectedListView, Mode=OneWay, Converter={StaticResource VisibilityConverter}}" Command="{Binding Delete}"/>
如果没有在更高级别上设置DataContext,则应该能够省略DataContext={Binding DataContext,ElementName=Window}
编辑:另一个选项是绑定到用户视图模型类中的ButtonVisibility属性。在MySelcetedListView设置器中,将现有对象的值设置为“折叠”或“隐藏”,并将新对象的值设置为“可见”。然后绑定将是Visibility={Binding ButtonVisibility}VisibilityConverter做什么?Visibilityconverter必须能够处理SelectedItem的类型。您是否尝试在VisibilityConverter的实现中设置断点?我已经在另一个ViewModel中设置了DataContext,不问为什么…:P、 所以我需要这个条目。绑定到MySelectedListView不起作用,它显示了相同的结果。ViewModel中的属性如下所示:公共用户MySelectedListView
<Grid Height="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="212"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="15"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" x:Name="lbuser" ItemsSource="{Binding Users, Mode=TwoWay}" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.ColumnSpan="2" SelectedItem="{Binding MySelectedListView, Mode=TwoWay}" Height="390" Width="Auto" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="15"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Bezeichnung}" Grid.ColumnSpan="4" FontSize="22.5" FontWeight="ExtraBold"/>
<TextBlock Grid.Row="1" Text="Name"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Name}"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="Age"/>
<TextBlock Grid.Row="1" Grid.Column="4" Text="{Binding Path=Age, Converter={StaticResource EuroConverter}}"/>
<TextBlock Grid.Row="2" Text="E-Mail"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=EMail}" Width="Auto"/>
<TextBlock Grid.Row="2" Grid.Column="2" Text="Phone"/>
<TextBlock Grid.Row="2" Grid.Column="4" Text="{Binding Path=Phone, Converter={StaticResource EuroConverter}}"/>
<TextBlock Grid.Row="3" Text="Born"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=YearBorn}" Width="Auto"/>
<TextBlock Grid.Row="3" Grid.Column="2" Text="Birthplace"/>
<TextBlock Grid.Row="3" Grid.Column="4" Text="{Binding Path=Birthplace}"/>
</Grid>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row="0" Content="Delete" Visibility="{Binding Path=SelectedItem, Mode=OneWay, ElementName=lbuser, Converter={StaticResource VisibilityConverter}}" Command="{Binding Delete}"/>
<Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row="1" Content="Change" Visibility="{Binding Path=SelectedItem, Mode=OneWay, ElementName=lbuser, Converter={StaticResource VisibilityConverter}}" Command="{Binding Change}" />
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
</Grid>
public class VisibilityConverter : IValueConverter
{
#region [ IValueConverter ]
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return System.Windows.Visibility.Collapsed;
return System.Windows.Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
<Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row="0" Content="Delete" Visibility="{Binding Path=MySelectedListView, Mode=OneWay, Converter={StaticResource VisibilityConverter}}" Command="{Binding Delete}"/>