1

未定义 DataTemplate 时,如何使用构造函数参数将 View 绑定到 ViewModel?

我基本上是在尝试将TreeView控件绑定到它的数据源。

浏览器视图.xaml

<UserControl>
    <TreeView 
        x:Name="StatusTree"
            ItemContainerStyle="{StaticResource TreeViewItemStyle}"
        ItemsSource="{Binding Status, Mode=OneTime}"
        ItemTemplate="{StaticResource CheckBoxItemTemplate}"
    />
</UserControl>

浏览器视图模型.cs

public class BrowserNewViewModel : WorkspaceViewModel
{
    public BrowserNewViewModel(string name)
    {
        this.DisplayName = name;
    }

    public List<TreeViewModel> Status
    { ... }
}

下面描述了我如何实例化 ViewModel。我WorkspaceViewModel按照Josh Smith 的 MVVM 文章使用界面。TreeViewModel在这里解释

MainWindowViewModel.cs

void DisplayBrowser()
{
    BrowserViewModel browserViewModel = new BrowserViewModel("Browser");
    this.AddTab(browserViewModel);
}

这个问题描述了一个类似的场景,但答案对我不起作用,因为我没有明确引用UserControl.MainWindow

我知道我不能DataTemplate在 MainWindow 中定义 a,Resources因为 BrowserViewModel 有一个带参数的构造函数。

还有其他解决方案需要使用框架。有没有避免使用框架的简单方法?

4

0 回答 0