繁体   English   中英

如果在GridView中选择了项目,如何启用按钮

[英]How to enable button if item selected in a GridView

选择网格视图项时,我想启用按钮,以便在Metro应用程序中更新我的GUI。 该按钮也包含为列表视图项。 下面是我想做什么的代码片段。 请帮忙。

<GridView Name="searchPanelGrid"  SelectionMode="Single" 
                                HorizontalAlignment="Left"
                                ScrollViewer.IsHorizontalScrollChainingEnabled="True"
                                ScrollViewer.IsVerticalScrollChainingEnabled ="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                ScrollViewer.HorizontalScrollMode="Enabled"
                                ScrollViewer.VerticalScrollMode="Enabled"
                                ItemsSource="{Binding Source={StaticResource CollectionItems}}" Grid.Row="2">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapGrid Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="6" Height="175" Width="150" Background="#FFFAFAFA">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="85"/>
                        <RowDefinition Height="50"/>
                        <RowDefinition Height="30"/>
                    </Grid.RowDefinitions>
                    <StackPanel Background="#FF0A56BF" Width="150" Height="85" Grid.Row="0">
                        <Image Source="{Binding Path=ThumnailUrl}" Stretch="UniformToFill" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                    </StackPanel>
                    <TextBlock Text="{Binding Path=VideoName}" TextWrapping="Wrap" Foreground="#FF017DD5" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" Height="Auto" FontSize="12"/>
                    <Button x:Name="downloadButton" Grid.Row="3" Content="Download Video" HorizontalAlignment="Left" VerticalAlignment="Bottom" Style="{StaticResource DownloadButtonStyle}" Click="downloadButton_Click" IsEnabled="{Binding}" />
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

无法绑定按钮属性IsEnabled。 任何建议,我怎么做?

我通过在类中声明一个属性来解决此问题,通过该属性绑定collectionitems并将该属性绑定到按钮isenabled属性,然后在SelectionChangeEvent上获取网格视图的选定项并将按钮isenabled属性值设置为true。 它的工作。

XAML文件SearchPanel.xaml

<GridView Name="searchPanelGrid"  SelectionMode="Single" 
                                HorizontalAlignment="Left"
                                ScrollViewer.IsHorizontalScrollChainingEnabled="True"
                                ScrollViewer.IsVerticalScrollChainingEnabled ="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                ScrollViewer.HorizontalScrollMode="Enabled"
                                ScrollViewer.VerticalScrollMode="Enabled"
                                ItemsSource="{Binding Source={StaticResource CollectionItems}}" Grid.Row="2" SelectionChanged="searchPanelGrid_SelectionChanged">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapGrid Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="6" Height="175" Width="150" Background="#FFFAFAFA">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="85"/>
                        <RowDefinition Height="50"/>
                        <RowDefinition Height="30"/>
                    </Grid.RowDefinitions>
                    <StackPanel Background="#FF0A56BF" Width="150" Height="85" Grid.Row="0">
                        <Image Source="{Binding Path=ThumnailUrl}" Stretch="UniformToFill" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                    </StackPanel>
                    <TextBlock Text="{Binding Path=VideoName}" TextWrapping="Wrap" Foreground="#FF017DD5" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" Height="Auto" FontSize="12"/>
                    <Button x:Name="downloadButton" Grid.Row="3" Content="Download Video" HorizontalAlignment="Left" VerticalAlignment="Bottom" Style="{StaticResource DownloadButtonStyle}" Click="downloadButton_Click" IsEnabled="{Binding IsSelected}" />
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

绑定到GridView的ItemsSource属性的类

public class VideoInfo : INotifyPropertyChanged
{
    private bool isSelected;
    public bool IsSelected
    {
        get { return isSelected; }
        set
        {
            isSelected = value;
            NotifyPropertyChanged("IsSelected");
        }
    }

    private string thumnailUrl;
    public string ThumnailUrl
    {
        get { return thumnailUrl; }
        set
        {
            thumnailUrl = value;
            NotifyPropertyChanged("ThumnailUrl");
        }
    }

    private string videoName;
    public string VideoName
    {
        get { return videoName; }
        set
        {
            videoName = value;
            NotifyPropertyChanged("VideoName");

        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

GridView的SelectionChangeEvent上的.cs文件SearchPanel.xaml.cs

private void searchPanelGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MovieInfo info = (e.AddedItems[0]) as MovieInfo;
        info.IsSelected = true;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM