1

カスタムユーザーコントロールを備えたグリッドビューがあります。ユーザーコントロールの XAML は次のとおりです。

<UserControl
    x:Class="App11.VideoPreview"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App11"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="250"
    d:DesignWidth="250">

    <Grid>
        <Button Height="250" Width="250" Padding="0" BorderThickness="0">
            <StackPanel>
                <Image Name="image1" Height="250" Width="250" Stretch="None"/>
                <Grid Margin="0,-74,0,0">
                    <Grid.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.5">
                            <GradientStop Color="Black"/>
                            <GradientStop Color="#FF5B5B5B" Offset="1"/>
                        </LinearGradientBrush>
                    </Grid.Background>
                    <TextBlock x:Name="textBox1" TextWrapping="Wrap" FlowDirection="RightToLeft" Foreground="White" Padding="5"/>
                </Grid>
            </StackPanel>
        </Button>
    </Grid>
</UserControl>

ボタンがグリッドビュー内でクリックされたときにクリックイベントをキャプチャするにはどうすればよいですか? GridView_ItemClickgridviewページの.csで試しましたが、usercontrolページの.csGridView1_SelectionChangedでも試しました 両方ともうまくいきませんでした。理由はありますか?button_Click

編集:うまくいきました。Frame.Navigate(typeof(PageName));
I can't change frame from usercontrolを使用してフレームを変更しようとしました。ビルド関数で現在のフレームをユーザー コントロールに送信してから、次のようにフレームを変更する必要がありました。

    Frame frame;
    public VideoPreview(Frame f)
    {
        this.InitializeComponent();
        frame = f;
    }


    private void Button_Click(object sender, RoutedEventArgs e)
    {
        frame.Navigate(typeof(PlayVideo));
    }
4

1 に答える 1

0

MVVM パターンhttp://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorialを調べて、イベントの代わりにコマンドを使用してみてください。

<Button Command="{Binding SomeActionCommand}" /> 

これにより、コードがよりクリーンで信頼性の高いものになります。

于 2013-08-26T13:41:28.697 に答える