我有一个WinForm应用程序,我试图用WPF工具栏替换我的工具栏。 我的解决方案现在包含两个项目:
启用/禁用按钮,向组合添加项目,工具栏控件的事件处理必须在WinForm应用程序中定义,因此为了能够访问它们,我执行了以下操作:
这很好,但我想知道这是否是正确的方法。有没有更好的方法来做我想要的?
您可以发布工具栏的XAML吗? - HighCore
我问你工具栏的XAML的一个小例子。
<ToolBarTray>
<ToolBar Band="1" BandIndex="1">
<Button Name="btnDoSomething1">
<Image Source="/WpfExampToolbarCtrl;component/Images/DoSomething1.png" />
</Button>
<Button Name="btnDoSomething2">
<Image Source="/WpfExampToolbarCtrl;component/Images/DoSomething2.png" />
</Button>
<Separator />
<Menu>
<MenuItem Header="Create Item">
<MenuItem Header="Item 1" />
<MenuItem Header="Item 2" />
</MenuItem>
</Menu>
<Separator />
<ComboBox Name="comboCategory">
<ComboBoxItem Content="Category 1" IsSelected="True" />
<ComboBoxItem Content="Category 2" />
</ComboBox>
</ToolBar>
</ToolBarTray>
我想为工具栏中的每个控件命名,并在后面的代码中为每个控件定义一个get属性。这样我可以从我的WinForm应用程序的主要形式访问每个工具栏的控件,并做我想要的。 (添加事件,在运行时禁用/启用控件,在初始化或运行时将项添加到组合,...)。 但根据我对 Kent Boogaart 的理解,这不是正确的做法。
答案 0 :(得分:1)
我很快就会将WPF UI绑定到模型上。然后,我将从Winforms端访问该模型并操纵它。
详细说明:WPF的绑定基础结构非常强大,与Winforms中的习惯不同。 WPF应用程序倾向于遵循MVVM pattern,因此视图的数据上下文是视图模型,视图中的控件与视图模型中的属性绑定。
因此,我建议您首先定义视图模型,然后修改WPF视图以绑定到该视图模型上的属性,然后从Winforms代码访问该视图模型。从Winforms代码更改该视图模型的属性将自动更新WPF视图。