如何重构例如:
<UserControl x:Class="Application.Views.TestView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Application.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<StackPanel HorizontalAlignment="Left" Height="34" VerticalAlignment="Top">
<Button Content="Press me!" Command="{Binding Path=ServiceReadCommand}" />
<ListBox Width="200" Height="200" DataContext="{Binding ReactiveList}" />
</StackPanel>
</Grid>
</UserControl>
然后在ReactiveUi中使用Control作为:
// Navigate to the opening page of the application
Router.Navigate.Execute(new TestViewModel(this));
在AppBootStrapper中。
答案 0 :(得分:0)
这个答案所指的是一个叫做隐式DataTemplate 的人。这是一个包含数据类型的DataTemplate,但没有用于标识它的关键属性。
每当WPF在Visual Tree中绘制非UI对象时,它会检查是否首先为该对象定义了任何模板。
例如,如果您在<XXXX.Resources>
某处
<DataTemplate DataType="{x:Type local:TestViewModel}">
<local:TestView />
</DataTemplate>
然后,当WPF尝试在UI中绘制TestViewModel
对象时,它会使用TestView
绘制它。
ContentControl
经常用于在UI中插入代码对象,因为.Content
属性可以是任何对象,包括ViewModel或Models。
<ContentControl Content="{Binding CurrentViewModel}" />
您链接的问题是关于如何使绑定本身类型安全并支持重构,这不会那样做。例如,如果您有<TextBox Text="{Binding Name}" />
并且想要将Name
重命名为GroupName
,则Visual Studio不会知道.Name
属性已链接到重命名的.GroupName
} property。