我想将一个未绑定的列添加到xamgrid但是我想从combox获取值,组合框在运行时绑定到通道对象。
我尝试添加未绑定的列。
试过:
<Binding Source="{StaticResource ChannelTemplate}" Path="SelectedItem.Content" />
但它似乎不起作用 我想将channelcode绑定到网格。
网格,下面的类代码。
<UI:BaseControl.Resources>
<DataTemplate x:Key="ChannelTemplate" >
<StackPanel Orientation="Horizontal" >
<TextBlock Margin="2" Text="{Binding Path=ChannelName}"/>
</StackPanel>
</DataTemplate>
</UI:BaseControl.Resources>
<ComboBox Name="CboChannel" Margin="59,6,0,0" Height="22" Width="200" VerticalAlignment="Top" HorizontalAlignment="Left" ItemTemplate="{StaticResource ChannelTemplate}" >
</ComboBox>
<ig:XamGrid Name="grdInventory" ColumnWidth="auto" ....
<ig:XamGrid.Columns>
<ig:UnboundColumn Key="Channel">
<ig:UnboundColumn.ItemTemplate>
<DataTemplate >
<TextBlock >
<TextBlock.Text >
<Binding Source="{StaticResource ChannelTemplate}" Path="SelectedItem.Content" />
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ig:UnboundColumn.ItemTemplate>
</ig:UnboundColumn>
</ig:XamGrid.Columns>
</ig:XamGrid>
代码:
Public Class Channel
Implements IDisposable
<DataMember(IsRequired:=True)>
Public Property ChannelID As Long
<DataMember()>
Public Property ChannelDescription As String
<DataMember()>
Public Property ChannelName As String
<DataMember()>
Public Property ChannelCode As String
End Class
由于 Ĵ
答案 0 :(得分:0)
您可以尝试使用DataContext模式,以便您的未绑定列和组合框选定项都绑定到相同的值。例如(我在这里使用标准数据网格):
1)根据本文创建一个DataContextProxy类:http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspx
2)在包含网格和组合的页面上为DataContextProxy创建一个静态资源,例如:
<UserControl.Resources>
<Silverlight:DataContextProxy x:Key="Proxy"></Silverlight:DataContextProxy>
</UserControl.Resources>
3)将组合的SelectedValue属性绑定到VM上的公开属性,例如
<ComboBox Height="23"
HorizontalAlignment="Left"
SelectedValue="{Binding TestProperty, Mode=TwoWay}"
SelectedValuePath="Content"
Margin="126,54,0,0" x:Name="comboBox1"
VerticalAlignment="Top" Width="120" DisplayMemberPath="Content">
<ComboBox.Items>
<ComboBoxItem x:Name="x" Content="test2"></ComboBoxItem>
<ComboBoxItem x:Name="x2" Content="test"></ComboBoxItem>
</ComboBox.Items>
</ComboBox>
4)将网格列模板绑定到相同的VM属性,例如
<sdk:DataGrid AutoGenerateColumns="True"
Height="120"
HorizontalAlignment="Left"
Margin="155,153,0,0"
Name="dataGrid1"
VerticalAlignment="Top" Width="120">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Test">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Mode=OneWay,Source={StaticResource Proxy},Path=DataSource.TestProperty}">
</TextBlock>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
当我敲了一个快速测试应用程序时,这对我有用。 DataGridTemplateColumn与选定的组合框项目保持同步。