listView(MVVM)上的c#WPF OnClickEvent

时间:2017-10-29 15:43:59

标签: c# wpf listview mvvm

我通常不会来这里寻求帮助,但我似乎无法将我的treeView连接到我的代码隐藏。我创建了它,现在我希望能够在选择项目更改时(仅限子项)执行操作。我认为这是基本的,我在这里找不到它,但我可能看起来不够深入。我没有我的代码库,我无法查找关于onClick事件的工作模型,你能帮忙吗? (现在我想做的就是显示一些照片,如果单击一个树项目,例如cat pics)

感谢您的帮助

  Title="TheBestCatPics from Google search first page" Height="350" Width="525">
<Grid>
    <TreeView x:Name="CatsOnClicks"
      SelectedItemChanged="myTreeView_SelectedItemChanged"
      ItemTemplate="{StaticResource PeerDetailTemplate} />
        <TreeViewItem>
            <TreeViewItem.Header>
                <StackPanel Orientation="Horizontal">
                    <Border Width="40" Height="15"></Border>
                    <Label Content= "TheCats, Majestic...."></Label>
                </StackPanel>
            </TreeViewItem.Header>
        </TreeViewItem>
            <!-- Child Item -->

            <TreeViewItem SelectedItemChanged="OnTreeViewSelectedItemChanged">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Label Content="Cica"></Label>
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
            <TreeViewItem>
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Label Content="Cicus"></Label>
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
        <TreeViewItem>
            <TreeViewItem.Header>
                <StackPanel Orientation="Horizontal">
                    <Label Content="Macska"></Label>
                </StackPanel>
            </TreeViewItem.Header>
        </TreeViewItem>
    </TreeView>

</Grid>

&#34;代码隐藏&#34;:

namespace WpfApp___TreeViewWithCats
{
    class CatsOnClick
    {
        public object CatsOnClicks { get; set; }

        private void myTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            CatsOnClick selectedItem = (CatsOnClick)CatsOnClicks.SelectedItem;
            // show cat pics
        }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您清理代码,它确实可以正常工作。

这是一个最小的工作示例(背后的代码与您的相同):

ItemTemplate="{StaticResource PeerDetailTemplate} />

如你所见:

  1. 您应该删除此处的结束斜杠

    ItemTemplate="{StaticResource PeerDetailTemplate}" 
    
  2. 您应该在ItemTemplate中添加结束引号

    SelectedItemChanged
  3. 您应该从TreeViewItems中删除&事件