我有5列的ListView:如何讓WPF在我的視圖中實例化一個自定義控件,在我的XAML中使用另一個自定義控件基類?
<ListView x:Name="FieldList" ItemsSource="{Binding MonitorField}" SelectedItem="{Binding Field}" Margin="33,22,87,209" Grid.Column="1" Grid.RowSpan="2">
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Field Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="127" Text="{Binding Id}" Height="32" FontSize="16" IsReadOnly="False" Background="Transparent" BorderThickness="0" TextWrapping="Wrap"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="140" Header="File type" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="127" ItemsSource="{Binding ResourceTypeValues}" SelectedItem="{Binding ResourceTypeToLoad}" Height="24" FontSize="16" Background="Transparent" BorderThickness="0" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="140" Header="Path" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<MyNamespace:PathControl Width="127" Text="{Binding ResourcePathToLoad, Mode=TwoWay}" Height="32" FontSize="16" Background="Transparent" TextWrapping="Wrap">
<MyNamespace:PathControl.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding BrowseFileCommand}" />
</MyNamespace:PathControl.InputBindings>
</MyNamespace:PathControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
,這裏是我的自定義控制PathControl等系統testControl從PathControl
public class PathControl : TextBox, IPathControl
{
static PathControl()
{
//DefaultStyleKeyProperty.OverrideMetadata(typeof(PathControl), new FrameworkPropertyMetadata(typeof(PathControl)));
}
}
public class TestControl : PathControl
{
static TestControl()
{
}
}
繼承我希望做的是使WPF實例根據自定義的控制在PathControl之前定義的Combobox上。
例如,如果我在組合框中選擇「Txt」,我想創建一個從PathControl繼承的TxtControl。
根據自定義控件的實例化,鼠標綁定將調用不同的方法。
這有可能嗎?有沒有另外一種方法來實現這一點?
使用MVVM,你有兩個型號 - A''和'B'。您爲它們設計了兩個視圖:'AView:BaseView'和'BView:VaseView'。你可以在你的資源中創建數據模板,比如' { DataTemplate>'等。綁定到模型實例的內容控件(例如ListBox)將自動搜索出正確的DataTemplate以用於基於類型顯示它。這就是MVVM的工作原理。 –
Will