目前的USERCONTROL.资源



在我的XAML中,我将资源定义为VehicleDatainput,它为用户提供了一些文本框以输入数据。如果我不定义x:键,它将在我的应用中呈现自身,并尽其所能。问题是我想决定是在我看来的,它是在X:键的帮助下放置的,但我无法正确绑定。

您可以在我的代码中看到我尝试使用内容控件并与" VehicleDatainput"结合的尝试,但在运行时不起作用。

我试图找到这个问题的答案,但是似乎没有人认为我以错误的方式侵犯了这个问题,我错过了什么?

<UserControl x:Class="RegCarManager.Vehicles.CreateVehicle.CreateVehicleView"
         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:vehicles="clr-namespace:RegCarManager.Vehicles"
         xmlns:vehiclesViewModel="clr-namespace:RegCarManager.Vehicles.CreateVehicle"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">

<UserControl.Resources>
    <DataTemplate x:Key="vehicleDataInput" DataType="{x:Type vehicles:VehicleModel}">
        <Grid HorizontalAlignment="Stretch" VerticalAlignment="Top" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <TextBlock Grid.Column="0" Grid.Row="1" Text="Model" VerticalAlignment="Center" Margin="5" />
            <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Model}" Margin="5" Width="150" />
            <TextBlock Grid.Column="0" Grid.Row="2" Text="Reg number" VerticalAlignment="Center" Margin="5" />
            <TextBox Grid.Column="1" Grid.Row="2" Text="{Binding RegNumber}" Margin="5" Width="150" />
        </Grid>
    </DataTemplate>
</UserControl.Resources>

<DockPanel Margin="20">
    <ComboBox   DockPanel.Dock="Top"
                ItemsSource="{Binding Clients}" 
                DisplayMemberPath="FullName"
                SelectedValuePath="ClientId"
                SelectedValue="{Binding OwnerId, Mode=TwoWay}" />
    <ContentControl Content="{DynamicResource vehicleDataInput}" />
    <DockPanel DockPanel.Dock="Bottom">
        <Button Content="Save" DockPanel.Dock="Right" Margin="10,2" VerticalAlignment="Center"
                Command="{Binding Path=SaveNewVehicleCommand}" IsDefault="True" Width="100" />
    </DockPanel>
    <ContentControl Margin="20,10" Content="{Binding Path=NewVehicle}" />
</DockPanel>

模板用于生成显示内容的UI。这不是内容;这是关于如何向用户展示内容的描述。

<ContentControl
    Content="{Binding NewVehicle}"
    ContentTemplate="{StaticResource vehicleDataInput}" 
    />

我猜想您必须在主ViewModel中的某个地方具有VehicleModel的实例。那是NewVehicle是什么?

在这种情况下,无论您使用StaticResource还是DynamicResource,这都不重要。不同之处在于,如果您在运行时用不同的模板替换资源词典中的vehicleDataInput资源,则DynamicResource将注意这一点,并将更新ContentControl。但是您不会这样做,所以StaticResource很好。

最新更新