Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到SelectedItem的按钮可见性_C#_Xaml_Binding_Visibility - Fatal编程技术网

C# 绑定到SelectedItem的按钮可见性

C# 绑定到SelectedItem的按钮可见性,c#,xaml,binding,visibility,C#,Xaml,Binding,Visibility,我在装订方面有点问题。我想用列表框的SelectedItem绑定2个按钮 列表框包含多个值,并显示它们的名称、年龄等,。。。。当用户选择列表框的一个条目时,两个按钮“删除”和“更改”应弹出尝试将可见性绑定到MySelectedListView。这是列表框的选定项绑定到的ViewModels属性。那么该值应该是正确的类型 <Button DataContext="{Binding DataContext, ElementName=Window}" FontSize="15" Grid.Row

我在装订方面有点问题。我想用列表框的SelectedItem绑定2个按钮


列表框包含多个值,并显示它们的名称、年龄等,。。。。当用户选择列表框的一个条目时,两个按钮“删除”和“更改”应弹出尝试将可见性绑定到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}"/>