C# 如何更改列表框的IsVisible属性?
我正在做一个简单的图书编辑。C# 如何更改列表框的IsVisible属性?,c#,reactiveui,avaloniaui,C#,Reactiveui,Avaloniaui,我正在做一个简单的图书编辑。 在BookEdition窗口中,我希望主题和子主题按层次顺序显示,所以我使用复杂的数据模板制作了ItemsControl来显示它们。我现在拥有的是: 主题是按钮,如果单击相应的主题按钮(如下拉列表),我希望子主题的列表框可见。 问题是我使用的是MVVM,我不能在OnClick事件中更改ListBox的IsVisible属性。 我如何在不破坏MVVM模式的情况下做到这一点 这是我的XAML代码: <ScrollViewer>
在BookEdition窗口中,我希望主题和子主题按层次顺序显示,所以我使用复杂的数据模板制作了ItemsControl来显示它们。我现在拥有的是:
主题是按钮,如果单击相应的主题按钮(如下拉列表),我希望子主题的列表框可见。
问题是我使用的是MVVM,我不能在OnClick事件中更改ListBox的IsVisible属性。
我如何在不破坏MVVM模式的情况下做到这一点 这是我的XAML代码:
<ScrollViewer>
<Grid ColumnDefinitions="auto, *" RowDefinitions="auto">
<ItemsControl Grid.Column="0" Grid.Row="0" Items="{Binding Book.Themes}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Name="kekw" Content="{Binding Name}" />
<ListBox Items="{Binding Subthemes}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</ScrollViewer>
这是视图模型:
public class EditBookViewModel
{
private Book book;
public Book Book
{
get
{
return book;
}
set
{
book = value;
}
}
public EditBookViewModel(string name, string path)
{
book = new Book(name, path);
book.Themes = new LinkedList<Theme>();
book.Themes.AddLast(new Theme("Theme 1", "Page 1"));
book.Themes.AddLast(new Theme("Theme 2", "Page 2"));
book.Themes.AddLast(new Theme("Theme 3", "Page 3"));
foreach(Theme t in book.Themes)
{
t.Subthemes = new LinkedList<Subtheme>();
t.Subthemes.AddLast(new Subtheme("Subtheme 1", "Page 1"));
t.Subthemes.AddLast(new Subtheme("Subtheme 2", "Page 2"));
t.Subthemes.AddLast(new Subtheme("Subtheme 3", "Page 3"));
}
}
}
公共类EditBookViewModel
{
私人书籍;
公共图书
{
得到
{
还书;
}
设置
{
账面价值;
}
}
公共EditBookViewModel(字符串名称、字符串路径)
{
book=新书(名称、路径);
book.Themes=新建LinkedList();
book.Themes.AddLast(新主题(“主题1”,“第1页”);
book.Themes.AddLast(新主题(“主题2”,“第2页”);
book.Themes.AddLast(新主题(“主题3”,“第3页”);
foreach(书中的主题t.Themes)
{
t、 子主题=新链接列表();
t、 子主题。添加(新子主题(“子主题1”,“第1页”);
t、 子主题。添加(新子主题(“子主题2”,“第2页”);
t、 子主题。添加(新子主题(“子主题3”,“第3页”);
}
}
}
我怀疑您在询问有关WPF数据绑定的问题。
我是Xamarin.Forms开发者,如果我为Xamarin.Forms做这件事,我可以建议我该怎么做
绑定到该命令以更新布尔属性值。(并且CommandParameter绑定到theme.In Xamarin.Forms中为“.”)