大家好,我上周以来遇到了一个问题,我无法解决原因,问题是我希望我的文本框数据显示在数据网格中,我使用的是WPF C#,模式是MVVM。
我在XAML中的代码是:
<TextBox
Grid.Row="0"
Grid.Column="1"
Margin="0,5,0,0"
Height="25"
Foreground="Black"
Opacity="0.8"
Width="Auto"
Text="{Binding VlanName, UpdateSourceTrigger=PropertyChanged}"
/>
<TextBox
Grid.Row="1"
Grid.Column="1"
Margin="0,5,0,0"
Height="25"
Foreground="Black"
Opacity="0.8"
Width="70"
HorizontalAlignment="Left"
Text="{Binding VlanID, UpdateSourceTrigger=PropertyChanged}"
/>
<Button Grid.Column="3"
Grid.Row="1"
Content="Add VLAN"
Margin="10,5,0,0"
Style="{StaticResource AppButtons}"
Command="{Binding AddVlan}"
/>
<Button Grid.Column="3"
Grid.Row="2"
Content="Remove VLAN"
Margin="10,5,0,0"
Style="{StaticResource AppButtons}"
Width="100"
Command="{Binding RemoveVlan}"
/>
<DataGrid Grid.Row="4"
Grid.ColumnSpan="3"
Height="200"
Margin="10,10,0,0"
Name="dg"
ItemsSource="{Binding Source=vlan}"
AutoGenerateColumns="False"
>
<DataGrid.Columns>
<DataGridTextColumn Header="S.No" Binding="{Binding Path=S_No}"/>
<DataGridTextColumn Header="VLAN Name" Binding="{Binding Path=vname}" />
<DataGridTextColumn Header="VLAN ID" Binding="{Binding Path=vid}" />
<DataGridTextColumn Header=" IP" Width="100"/>
<DataGridTextColumn Header="VLAN Ports" Width="100"/>
</DataGrid.Columns>
</DataGrid>
C#View模型是:
vlan = new ObservableCollection<VLANSPropertyClass>();
public string VlanName
{
get
{
return this.ConfigurationLibrary.ConfigLibraryVlanName;
}
set
{
if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value))
{
return;
}
this.ConfigurationLibrary.ConfigLibraryVlanName = value;
this.OnPropertyChanged("VlanName");
}
}
public string VlanID
{
get
{
return this.ConfigurationLibrary.ConfigLibraryVlanName;
}
set
{
if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value))
{
return;
}
this.ConfigurationLibrary.ConfigLibraryVlanName = value;
this.OnPropertyChanged("VlanID");
}
}
public ICommand AddVlan
{
get
{
if (_addVlan == null)
_addVlan = new RelayCommand(() => this.AddVlans());
return _addVlan;
}
}
public ICommand RemoveVlan
{
get
{
if (_removeVlan == null)
_removeVlan = new RelayCommand(() => this.RemoveVlans());
return _removeVlan;
}
}
#endregion //ICommand region end
void AddVlans()
{
Console.WriteLine("Add vlan");
var serial = new VLANSPropertyClass();
serial.S_No = vlan.Count + 1;
serial.vname = VlanName;
serial.vid = VlanID;
vlan.Add(serial);
}
VLAN方法中的代码无法正常工作我不知道为什么因为我能够看到我在Console中写的行Add vlan
但后来代码无法正常工作我不知道原因请帮忙吗?
答案 0 :(得分:0)
解决:
问题出在我的XAML中的ItemSsource中。我将ItemsSource="{Binding Source=vlan}"
更改为ItemsSource="{Binding vlan}"
它开始显示我的Datagrid中的所有数据。
:)