1

如何从代码创建它?

<CheckBox Command="{Binding Source={StaticResource VMLocator}, Path=TimeTableInformationViewModel.MyCommand }"
                  CommandParameter="{Binding valueFromInput}" />

我不确定如何从代码后面设置 Command 属性:

    public static DataTemplate CreateDataTemplate()
    {
        var block = new FrameworkElementFactory(typeof(CheckBox));
        block.SetBinding(CheckBox.CommandProperty, new Binding(""));
        DataTemplate newDataTemplate = new DataTemplate() { VisualTree = block };

    }
4

1 回答 1

3

试试这个:

TypeOfYourObject vmLocator = (TypeOfYourObject)Resources["VMLocator"];
CheckBox checkBox = new CheckBox();
checkBox.Command = vmLocator.TimeTableInformationViewModel.MyCommand;
checkBox.CommandParameter = vmLocator.valueFromInput;

更新>>>

有很多方法可以做到这一点,但我提供了一个简单的示例,其中包括设置Binding... 更多信息,请参阅如何在 c# 代码中构建 DataTemplate?发布以了解如何创建更大DataTemplate的代码。

FrameworkElementFactory checkbox = new FrameworkElementFactory(typeof(CheckBox));
checkBox.Name = "aCheckBox";
checkBox.SetBinding(TextBlock.IsCheckedProperty, new Binding("YourBoolProperty"));
DataTemplate dataTemplate = new DataTemplate() { VisualTree = checkbox };
于 2013-09-05T08:55:56.967 回答