![](/img/trans.png)
[英]C# and WPF - Binding List on ItemsSource on DataGridComboBoxColumn
[英]Problems binding WPF DataGridComboBoxColumn C# 4
已經環顧了大約4個小時,所以如果答案在這里,對不起。 無論如何..這是:
我有一個DataGrid,並且正在嘗試實現DatGridComboBoxColumn。 我已經盡力使它提供正確的數據。 但是,當我進行選擇時,它不僅會更改選定的列,還會更改主表中的另一列。
特別:
我的網上論壇表格如下:
ID,名稱
1,A
2,B
3,C
如果在DataGridComboBoxColumn中選擇A,則會將Schedules DataSource中的GroupId字段更改為正確的值1。但是-它還會將Schedules DataSource中的Name字段更改為“ A”。 我已經嘗試過約70種不同的組合方式來設定事物。 唯一可以將Schedules中的Name字段重命名為ScheduleName之類的東西。 這是WPF中的某種錯誤,還是我編寫的代碼不正確?
任何幫助都感激不盡!
奧森
這是頁面代碼:
<Page x:Class="Bix.SchedulesMainPage"
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"
mc:Ignorable="d"
d:DesignHeight="565" d:DesignWidth="775"
Title="SchedulesMainPage" xmlns:my="clr-namespace:Bix">
<Page.Resources>
<ObjectDataProvider x:Key="ScheduleDataProvider" ObjectType="{x:Type my:ScheduleDataProvider}"/>
<ObjectDataProvider x:Key="Schedules"
ObjectInstance="{StaticResource ScheduleDataProvider}"
MethodName="GetSchedules"/>
<ObjectDataProvider x:Key="GroupDataProvider" ObjectType="{x:Type my:GroupDataProvider}"/>
<ObjectDataProvider x:Key="Groups"
ObjectInstance="{StaticResource GroupDataProvider}"
MethodName="GetGroups"/>
<ObjectDataProvider x:Key="ReportDataProvider" ObjectType="{x:Type my:ReportDataProvider}"/>
<ObjectDataProvider x:Key="Reports"
ObjectInstance="{StaticResource ReportDataProvider}"
MethodName="GetReports"/>
</Page.Resources>
<Grid>
<Label Content="Schedules" FontSize="32" FontWeight="Bold" Foreground="#FF5A5A5A" Height="52" HorizontalAlignment="Left" Margin="10,10,0,0" Name="label1" VerticalAlignment="Top" Width="719" />
<DataGrid AutoGenerateColumns="False" DataContext="{Binding Source={StaticResource Schedules}}" Height="224" HorizontalAlignment="Left" HorizontalGridLinesBrush="#FFCBCBCB" ItemsSource="{Binding}" Margin="12,68,0,0" Name="dgrdContacts" VerticalAlignment="Top" VerticalGridLinesBrush="#FFCBCBCB" Width="751">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" Width="120" />
<DataGridComboBoxColumn Header="Contact Group"
SelectedValueBinding="{Binding Path=GroupId}" DisplayMemberPath="Name" SelectedValuePath="Id" ItemsSource="{Binding Source={StaticResource Groups}}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" />
<Setter Property="Text" Value="{Binding Name}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" />
<Setter Property="Text" Value="{Binding Name}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
<DataGridTextColumn Binding="{Binding Path=Interval}" Header="Send Every" Width="120" />
<DataGridTextColumn Binding="{Binding Path=IntervalUnit}" Header="Time Unit" Width="120" />
<DataGridTextColumn Binding="{Binding Path=LastSend}" Header="Last Sent" Width="*" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
您正在將ComboBox
的Text
屬性綁定到數據源中基礎行的Name
屬性。 查看代碼,我看不到對EditingElementStyle
和ElementStyle
樣式有任何需要,因為您已經在其外部設置了相關屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.