2017-06-23 1 views
1

In meiner XAML Ich habe eine Ressource als vehicleDataInput definiert, die zur Eingabe von Daten einige Textfelder für den Benutzer präsentiert. Wenn ich kein x: Schlüssel dafür definiere, wird es sich in meiner App präsentieren und so funktionieren wie es soll. Problem ist, ich möchte entscheiden, ob es aus meiner Sicht ist es mit Hilfe eines x platziert: Key, aber ich kann nicht die Bindung richtig zu bekommen.Gegenwart UserControl.Resources

Sie können weiter in meinem Code unten sehen, dass ich mit einer Inhaltskontrolle und die Bindung an „vehicleDataInput“ versucht, aber es funktioniert nicht zur Laufzeit. I`m aproaching dieses Problem in die falsche Richtung

habe ich versucht, eine Antwort auf dieses Problem zu finden, aber niemand scheint es zu haben, die mich denken lässt, was habe ich verpasst?

<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> 

+0

Hat Ihr Viewmodel eine Eigenschaft vom Typ 'VehicleModel'? Wo soll das 'VehicleModel' in Ihrem ContentControl angezeigt werden? –

Antwort

1

ist eine Schablone verwendet UI zu erzeugen, den Inhalt anzeigt. Es ist nicht der Inhalt; Es ist eine Beschreibung, wie der Inhalt dem Benutzer präsentiert werden soll.

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

Ich vermute, dass Sie eine Instanz von VehicleModel irgendwo in dem Hauptansichtsmodell haben. Ist das was NewVehicle ist? In diesem Fall spielt es keine Rolle, ob Sie StaticResource oder DynamicResource verwenden. Der Unterschied ist nur, dass wenn Sie die Ressource vehicleDataInput zur Laufzeit durch ein anderes Template im Ressourcenwörterbuch ersetzen, DynamicResource darauf achten und das ContentControl aktualisieren wird. Aber Sie werden das nicht tun, also ist StaticResource in Ordnung.

+0

Ja NewVehicle war die Eigenschaft, die ich verwendet habe, um das Modell zur Verfügung zu stellen, und mit dem Stück Code funktionierte es wie es sollte. Ich möchte Ihnen auch dafür danken, dass Sie sich die Zeit genommen haben, etwas über statische und dynamische Ressourcen zu erklären. –

Verwandte Themen