gpt4 book ai didi

c# - 新手wpf设计问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:04 24 4
gpt4 key购买 nike

我使用 NavigationWindow ,在第一个屏幕上,用户应该选择一些 radio button 并在下一个屏幕旁边按 next。

关于下一个屏幕上的radio button选择,我应该放上所有相关图片并为所有按钮提供相关功能。

这样做的正确方法是什么?

winforms 中,我将在下一个屏幕承包商中传递单选按钮值,并通过 if else 语句在承包商和事件函数中执行所有操作。

我已经了解了数据绑定(bind)。

你能一步步解释我应该如何实现这个东西吗....

最佳答案

正确的方法实际上取决于问题的复杂性。一个相当简单的方法是在应用程序启动时创建一个 View 模型对象并将其放入应用程序的资源字典中,然后让每个 Page 的构造函数设置 DataContext到那个对象。然后,您可以将页面中的控件绑定(bind)到该对象的属性,该对象本质上是整个页面集的数据上下文。

例如,在第 1 页上,您可能将一组单选按钮绑定(bind)到 View 模型中的一组 bool 属性。页面 2 的控件可以设置样式以根据这些属性的设置显示信息,例如:

<DockPanel Visibility="Collapsed">
<DockPanel.Style>
<Style TargetType="DockPanel">
<Style.Triggers>
<DataTrigger Binding="{Binding BooleanProperty1}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<!-- controls that should appear if BooleanProperty1 is True go here -->
</DockPanel>

很多情况下这都不起作用,但在相对简单的多部分向导的情况下,它可能就是您想要的。

一个不相关的注释,但自从您提出后:绑定(bind)到单选按钮有一个丑陋的小设计问题。如果将一组中的三个单选按钮的IsChecked 属性绑定(bind)到三个 bool 属性,然后单击每个按钮,您会发现源中的绑定(bind)值都设置为True。发生这种情况是因为当组中的单选按钮被选中时,它会明确清除组中其他按钮上的 IsChecked 值,这会破坏绑定(bind)。这有(某种)充分的理由,但如果您不知道它在那里,您可能会花很多时间在上面。实现绑定(bind)单选按钮的方法是将每个单选按钮放入其自己的组中并处理 View 模型中的切换,例如:

<RadioButton Group="BooleanProperty1" IsChecked="{Binding BooleanProperty1, Mode=TwoWay}"/>
<RadioButton Group="BooleanProperty2" IsChecked="{Binding BooleanProperty2, Mode=TwoWay}"/>
<RadioButton Group="BooleanProperty3" IsChecked="{Binding BooleanProperty3, Mode=TwoWay}"/>

public bool BooleanProperty1
{
set
{
if (value != _BooleanProperty1)
{
_BooleanProperty1 = value;
if (value)
{
BooleanProperty2 = false;
BooleanProperty3 = false;
}
OnPropertyChanged("BooleanProperty1");
}
}
}

关于c# - 新手wpf设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com