我嘗試將我的數據網格中的選定項綁定到某些文本框。 不幸的是,文本框不會在更改時更新。將數據網格項綁定到文本框
如果您需要更多信息請隨時諮詢。
在我看來,我嘗試將Datagrid的選定項的數據綁定到文本框。 在文本框中可以有一個您想要添加的新員工或您想要編輯的Datagrid之一。
<TextBox Name="TxtName" Text="{Binding Employee.LastName}" Grid.Column="1" Grid.Row="0"></TextBox>
<TextBox Name="TxtFirstName" Text="{Binding Employee.FirstName}" Grid.Column="3" Grid.Row="0"></TextBox>
<TextBox Name="TxtDateOfBirth" Text="{Binding Employee.DateOfBirth, StringFormat=d}" Grid.Column="1" Grid.Row="1"></TextBox>
<ComboBox Name="CmbGender" SelectedItem="{Binding Employee.Gender}" ItemsSource="{Binding Genders}" DisplayMemberPath="Short" Grid.Column="3" Grid.Row="1"/>
<DataGrid Name="GrdAllEmployees" ItemsSource="{Binding Employees}" SelectedItem="{Binding SelectedEmployee}" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="4" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChanged}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
在我的ViewModel中,我將所選員工的值設置爲文本框中顯示的員工,併爲兩者提高事件。
public Employee SelectedEmployee
{
get { return _selectedEmployee; }
set
{
_selectedEmployee = value;
NotifyPropertyChanged("SelectedEmployee");
_employee = _selectedEmployee;
NotifyPropertyChanged("Employee");
}
}
之後,這些值在調試時是正確的。但視圖不會更新。
因此,當您在「DataGrid」中更改所選項目時,會觸發'SelectedEmployee' setter? – dkozl
改善問題並讓人們閱讀它的好方法(它可能實際上幫助你自己解決問題)是儘可能多地刪除代碼,直到刪除更多的代碼不會再現問題,然後再發布它。 – franssu
@ Boot750還可以確定在綁定'SelectedEmployee'時設置哪個值,它更新'Employee'屬性,並且還觸發'SelectionChanged'命令,該命令也是'Employee = _selectedEmployee;' – dkozl