在我的应用程序中,我使用功能区控件,在此功能区上是一个按钮。 当我单击按钮时,它应该从我的视图中的数据网格中获取所选值。
现在当我点击按钮时,它获得的值始终为null
。
这是我的代码:
View1.xaml
<ScrollViewer Background="White" Grid.Row="1" Grid.Column="1" Margin="2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Visible">
<DataGrid SelectionMode="Single" ItemsSource="{Binding Collection}" SelectedItem="{Binding Test, Mode=TwoWay}" AutoGenerateColumns="False" Name="stackpanelLocked" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="RandomHeaderX" Binding="{Binding Path=X}"/>
<DataGridTextColumn Header="RandomHeaderY" Binding="{Binding Path=Y}"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
视图模型
//get selected item value
string lastSelectedValue;
private Model _test;
public Model Test
{
get
{
return _test;
}
set
{
_test = value;
if(Test != null)
this.lastSelectedValue = string.Format("Variabele X: {0} Variabele Y: {1}", Test.X, Test.Y);
}
}
private ICommand _ClickCommand;
public ICommand ClickCommand
{
get
{
if (_ClickCommand == null)
_ClickCommand = new DelegateCommand(new Action(Execute),
new Func<bool>(CanExecute));
return _ClickCommand;
}
}
public bool CanExecute()
{
return true;
}
public void Execute()
{
if(lastSelectedValue != null)
Clipboard.SetText(lastSelectedValue);
}
模型
public int X { get; set; }
public int Y { get; set; }
public Model(int x, int y)
{
X = x;
Y = y;
}
额外信息:
每次点击数据网格时,它都会实际填充string
lastSelectedValue
。
但是,当我单击功能区上的按钮时,它会说lastSelectedValue
为空。
收集内容:
public List<DatabaseClass.coord> AllCoords { get; set; }
public ObservableCollection<Model> Collection { get; set; }
public ModuleARibbonTabModel()
{
Collection = new ObservableCollection<Model>();
GenerateDatas();
}
private void GenerateDatas()
{
using (var ctx = new DatabaseClass.TestDatabaseEntities1 ())
{
AllCoords = ctx.coord.ToList();
}
foreach(DatabaseClass.coord f in AllCoords)
{
Collection.Add(new Model(Convert.ToInt32(f.Een.ToString()), Convert.ToInt32(f.Twee.ToString())));
}
}
答案 0 :(得分:1)
绑定到SelectedItem
而不是SelectedValue
。
答案 1 :(得分:0)
我设法解决了这个问题。
我不认为这是一个很好的解决方案,但这是我改变的:
我将string lastSelectedValue
更改为static string lastSelectedValue
这确保我可以获得价值。