gpt4 book ai didi

c# - 取决于 viewmodel 定义的按钮数量的对话框窗口

转载 作者:行者123 更新时间:2023-12-03 10:54:10 25 4
gpt4 key购买 nike

我有类似于这样的 View 模型:

public class MyDialogViewModel
{
public MyButtonViewModel[] Buttons{ get; }
public string Title { get; set; }
public string Message { get; set; }

public MyDialogViewModel(InputObject input)
{
Title= input.Title;
Message = input.Message;
Buttons= input.Buttons;
}
}

public class MyButtonViewModel
{
public MyButtonViewModel(ICommand command, string text)
{
Command = command;
Text = text;
}

public ICommand Command { get; }
public string Text { get; }
}

我无法更改此 View 模型。

现在我需要制作一个窗口,它充当一个带有自定义按钮集的对话框窗口,由 MyButtonViewModel[] 表示。 . MyButtonViewModel[]可以有不同数量的对象。

我怎样才能使我的窗口的大小适合 MyButtonViewModel[] 的大小?并且将有一组按钮绑定(bind)到每个
提出 MyButtonViewModel ?

说清楚 - 如果 MyButtonViewModel[]有 2 个元素 - 窗口应该有 2 个按钮。 3 个按钮用于 3 个元素,依此类推。

最佳答案

使用 ItemsControl正如@Babbillumpa 所建议的那样。它将为其ItemsSource 中的每个项目创建一个元素。 .

但是您还需要定义 MyButtonViewModel 的方式。以呈现在屏幕上。您可以通过定义 ItemTemplate 来做到这一点。 .这是您创建实际 Button 的位置绑定(bind)到您的 Text 的元素和 Command源属性:

<ItemsControl ItemsSource="{Binding Buttons, Mode=OneTime}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Text, Mode=OneTime}"
Command="{Binding Command, Mode=OneTime}"
Margin="0,0,5,0"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

关于c# - 取决于 viewmodel 定义的按钮数量的对话框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51417542/

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