有一个WPF用户控件与含有的DevExpress GridControl一个DockPanel中和,以下和GridControl,文本框的外面:
<UserControl x:Class="HellerOven.Setup.SetupGUI.WatlowView"
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"
xmlns:resx="clr-namespace:HellerOven.Languages"
xmlns:local="clr-namespace:HellerOven.Setup.SetupGUI"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<DockPanel>
<dxg:GridControl x:Name="WatlowSensorsGrid" EnableSmartColumnsGeneration="True" DockPanel.Dock="Top" ItemsSource="{Binding}" FontSize="14" FontWeight="Medium" Height="600" Margin="0,20,0,0">
...
</dxg:GridControl>
<TextBox Text="Alarm activation delay [seconds]" IsReadOnly="True" FontSize="14" Foreground="RoyalBlue" FontWeight="Medium" BorderThickness="0" Height="30"/>
<TextBox Text="30" Name="alarmActivationDelay" FontSize="14" Foreground="RoyalBlue" FontWeight="Medium" BorderThickness="1" Width="100" Height="30"/>
<Button Height="35" Width="200" Click="Add_Button_Click" HorizontalAlignment="Center" DockPanel.Dock="Bottom" Margin="0,50,0,0">
<StackPanel Orientation="Horizontal">
<Image Source="{dx:DXImage Image=Add_32x32.png}" Stretch="Uniform"/>
<TextBlock Text="Add Watlow Sensor" VerticalAlignment="Center" Margin="5 0 0 0" FontSize="14"/>
</StackPanel>
</Button>
</DockPanel>
在C#构造函数的用户控件,我指定GridControl和对TextBox单独的DataContext:
public WatlowView()
{
InitializeComponent();
WatlowSensorsGrid.DataContext = OvenCollections.Instance.SetupWizard.WatlowSensors;
alarmActivationDelay.DataContext = OvenCollections.Instance.SetupWizard.alarmActivationDelay;
}
在程序执行期间,该GridControl及其成员在其指定的DataContext被更新,但简单的整数“alarmActivationDelay”没有在其指定的DataContext更新。什么我误解有关的DataContext?谢谢。
您还没有建立对TextBox的Text属性的绑定,就像你与网格一样。理想情况下,你应该设置窗口的DataContext的,然后使用路径=来设置每个控件绑定到在XAML属性。你也不需要你做这种方式命名每个控制。下面是代码应该是什么样子:
public WatlowView()
{
InitializeComponent();
this.DataContext = OvenCollections.Instance.SetupWizard;
// No longer needed
// WatlowSensorsGrid.DataContext = OvenCollections.Instance.SetupWizard.WatlowSensors;
// alarmActivationDelay.DataContext = OvenCollections.Instance.SetupWizard.alarmActivationDelay;
}
下面是相关的XAML,与网格和文本框都设置绑定:
<DockPanel>
<dxg:GridControl x:Name="WatlowSensorsGrid" EnableSmartColumnsGeneration="True" DockPanel.Dock="Top" ItemsSource="{Binding Path=WatlowSensors}" FontSize="14" FontWeight="Medium" Height="600" Margin="0,20,0,0">
...
</dxg:GridControl>
<TextBox Text="Alarm activation delay [seconds]" IsReadOnly="True" FontSize="14" Foreground="RoyalBlue" FontWeight="Medium" BorderThickness="0" Height="30"/>
<TextBox Text="{Binding Path=alarmActivationDelay}" Name="alarmActivationDelay" FontSize="14" Foreground="RoyalBlue" FontWeight="Medium" BorderThickness="1" Width="100" Height="30"/>
<Button Height="35" Width="200" Click="Add_Button_Click" HorizontalAlignment="Center" DockPanel.Dock="Bottom" Margin="0,50,0,0">
<StackPanel Orientation="Horizontal">
<Image Source="{dx:DXImage Image=Add_32x32.png}" Stretch="Uniform"/>
<TextBlock Text="Add Watlow Sensor" VerticalAlignment="Center" Margin="5 0 0 0" FontSize="14"/>
</StackPanel>
</Button>
要查看Gridcontrol的变化可以用这个
WatlowSensorsGrid.BeginDataUpdate();
WatlowSensorsGrid.ItemsSource = OvenCollections.Instance.SetupWizard.WatlowSensors;
WatlowSensorsGrid.RefreshData();
WatlowSensorsGrid.EndDataUpdate();
对于文本框,你可以简单地设置报警激活Delay.Text,但如果你要使用的DataContext,你必须实现INotifyPropertyChanged接口。您可以在此qazxsw POI看执行