У меня есть такой XML-код: *
<?xml version="1.0" encoding="utf-8" ?>
<Rows>
<Row Id="1">
<Devices>
<Device DeviceId="123">Device 1</Device>
<Device DeviceId="abcd" >Device 2</Device>
</Devices>
<Methods>
<Method>Method 1</Method>
<Method>Method 2</Method>
</Methods>
</Row>
<Row Id="2">
<Devices>
<Device>Device 1</Device>
<Device>Device 2</Device>
</Devices>
<Methods>
<Method>Method 1</Method>
<Method>Method 2</Method>
</Methods>
</Row>
</Rows>
Мне нужно привязать данные XML выше к DataGrid.
Моя DataGrid выглядит следующим образом:
<wpfkit:DataGrid AutoGenerateColumns="False" DataContext="{Binding Grid}"
ItemsSource="{Binding Path=Elements[Row]}"
Width="Auto"
FrozenColumnCount="2"
SelectionMode="Extended"
CanUserAddRows="False"
x:Name="CommonPEGrid"
Loaded="CommonPEGrid_Loaded">
</wpfkit:DataGrid>
Мой код, с которым я связываю DataContext, выглядит следующим образом: я создал несколько столбцов шаблонов в коде и связал с ними DataTemplate.
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
Grid = XElement.Load("PE.xml");
}
public XElement Grid
{
get;
set;
}
}
Мой код нижеследующим образом :::
public partial class MainView : Window
{
DataGrid dg;
public MainView()
{
InitializeComponent();
}
private void CommonPEGrid_Loaded(object sender, RoutedEventArgs e)
{
dg = sender as DataGrid;
DataGridTemplateColumn column = null;
column = new DataGridTemplateColumn();
column.Header = "Device";
column.CellTemplate = this.FindResource("DeviceDefault") as DataTemplate;
dg.Columns.Add(column);
column = new DataGridTemplateColumn();
column.Header = "Commands";
column.CellTemplate = this.FindResource("MethodDefault") as DataTemplate;
dg.Columns.Add(column);
}
}
Теперь я не знаю, как отобразить элементы в XML в ComboBox с использованием DataTemplate.Это дает мне так много ошибок ::: Кроме того, элементы в выпадающем списке всегда пусты :( :(. Куда я иду не так. Эксперты, пожалуйста, помогите мне !!! Мой код выглядит следующим образом: *
<DataTemplate x:Key="DeviceDefault">
<ComboBox ItemsSource="{Binding XPath=Devices}" SelectedIndex="0" TextSearch.TextPath="Value" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Width="auto" FontSize="9" FontWeight="2" Height="auto" Margin="2" Text="{Binding Element[Device].Value}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>