如何在c#XAML中访问DataTemplate中的控件(按钮)

时间:2014-08-05 05:32:20

标签: c# wpf xaml listview datatemplate

我正在尝试创建一个有趣的漫画/ meme应用程序,如funnyjunk.com,其中包含每个漫画中的不喜欢和类似按钮,如下所示:http://s9.postimg.org/ikiyo7iy7/funnyjunk.png

我的问题是:我无法从代码隐藏的代码中访问DataTemplate中的不喜欢/类似按钮。有没有办法访问DataTemplate中的按钮?

我在这种情况下使用ListView,这就是我的DataTemplate的样子:

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
            <StackPanel>
                <Image Source="{Binding Image}" Height="600" Width="800" Stretch="UniformToFill"/>    
            </StackPanel>
            <StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
                <Button x:Name="blike" Content="L" FontSize="70" HorizontalAlignment="Center" VerticalAlignment="Center" Click="blike_Click"/>
                <TextBlock x:Name="tblrate" Text="0" FontSize="70" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                <Button x:Name="bdislike" Content="D" FontSize="70" HorizontalAlignment="Center" VerticalAlignment="Center" Click="bdislike_Click"/>
            </StackPanel>
</StackPanel>

以下是按钮的代码:

private void blike_Click(object sender, RoutedEventArgs e)
{
    int rate = Convert.ToInt16(tblrate.Text);
    rate += 1;
    tblrate.Text = Convert.ToString(rate);
}

private void bdislike_Click(object sender, RoutedEventArgs e)
{
    int rate = Convert.ToInt16(tblrate.Text);
    rate -= 1;
    tblrate.Text = Convert.ToString(rate);
}

这是我的DataContext(我把它命名为“DataSource”):

public class DataSource
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public string Image { get; set; }
        public DataSource(int _ID, string _Image, string _Title)
        {
            ID = _ID;
            Image = _Image;
            Title = _Title;
        }
    }

public class DataFill
    {
        public List<DataSource> Comics= new List<DataSource>();
        public void MainPageComics()
        {
            Comics.Add(new DataSource(1, "/Assets/Comic1.jpg", "Jokur and Botmon"));
            Comics.Add(new DataSource(2, "/Assets/Comic2.jpg", "Jokur and Botmon2"));
        }
}

我想要实现的目标是:

  1. 在EACH中工作的不喜欢/喜欢的按钮以及ListView中BOUND的每个漫画,所以它会改变漫画的不喜欢/喜欢的价值。
  2. 我尝试过:

    1. 第一个回答Jerry Nixon的教程(它只适用于文本框而不是文本块,我不明白为什么)

    2. 我仍然试图理解使用Command属性,这非常复杂。 如果您有一个非常有用的教程视频,我仍然在寻找使用ICommands的教程。

    3. 我是WPF编程的新手,非常感谢你。

0 个答案:

没有答案