我想用表中的單擊按鈕修改行。如何綁定CommandParameter並在radgridview中獲取選定的行ID
它我的代碼:
視圖模型:
public class PrzeszukiwanieBazyViewModel : INotifyPropertyChanged
{
private ModelBazyDanych _modelBazy;
private IList<EwidencjonowanaRzecz> _ewidencjaList;
private String _test;
public string Test
{
get { return _test; }
set
{
if (value == _test) return;
_test = value;
OnPropertyChanged();
}
}
public IList<EwidencjonowanaRzecz> EwidencjaList
{
get { return _ewidencjaList; }
set
{
if (Equals(value, _ewidencjaList)) return;
_ewidencjaList = value;
OnPropertyChanged();
}
}
public PrzeszukiwanieBazyViewModel(ModelBazyDanych pModelBazyDanych)
{
this._modelBazy = pModelBazyDanych;
LocalizationManager.Manager = new Jezyk();
// EwidencjaList = ModelBazy.SelectAllFromTable<EwidencjonowanaRzecz>().Where(m => m.Status == 0).ToList();
}
public ModelBazyDanych ModelBazy
{
get { return _modelBazy; }
set
{
if (Equals(value, _modelBazy)) return;
_modelBazy = value;
OnPropertyChanged();
}
}
private DelegateCommand _odswiezanieCommand;
public ICommand OdswiezanieCommand
{
get
{
if (_odswiezanieCommand == null)
_odswiezanieCommand = new DelegateCommand(Odswiezanie);
return _odswiezanieCommand;
}
}
private DelegateCommand _wydajCommand;
public ICommand WydajCommand
{
get
{
if (_wydajCommand == null)
_wydajCommand = new DelegateCommand(Wydaj);
return _wydajCommand;
}
}
private void Wydaj()
{
// HOW TO WRITE THIS ?:>
}
private void Odswiezanie()
{
// MessageBox.Show(Test);
EwidencjaList = ModelBazy.SelectAllFromTable<EwidencjonowanaRzecz>().Where(m => m.Status == 0).ToList();
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
XAML:
<controls:RadGridView
Grid.Row="0"
x:Name="TableRadGridView"
ItemsSource="{Binding Source={StaticResource Locator}, Path=PrzeszukiwanieBazyViewModel.EwidencjaList}"
AutoGenerateColumns="False"
ColumnWidth="auto"
FilteringMode="Popup"
BorderThickness="0">
<controls:RadGridView.Columns>
<controls:GridViewDataColumn DataMemberBinding="{Binding Id}" Header="Id" />
<controls:GridViewDataColumn DataMemberBinding="{Binding Nazwa}" Header="Nazwa" />
<controls:GridViewDataColumn DataMemberBinding="{Binding Model}" Header="Model" />
<controls:GridViewDataColumn DataMemberBinding="{Binding Marka}" Header="Marka" />
<controls:GridViewDataColumn DataMemberBinding="{Binding WagaRef.WagaPrzedmiotu}" Header="Waga" />
<controls:GridViewDataColumn DataMemberBinding="{Binding KolorRef.Barwa}" Header="Kolor" />
<controls:GridViewDataColumn DataMemberBinding="{Binding GdzieZnaleziono}" Header="Gdzie znaleziono" />
<controls:GridViewDataColumn DataMemberBinding="{Binding KtoZnalazl}" Header="Kto znalazł" />
<controls:GridViewDataColumn DataMemberBinding="{Binding Marka}" Header="Uwagi" />
<controls:GridViewDataColumn DataMemberBinding="{Binding KategoriaRef.Nazwa}" Header="Kategoria" />
<controls:GridViewDataColumn DataMemberBinding="{Binding UserRef.Login}" Header="Dodane przez" />
<controls:GridViewDataColumn DataMemberBinding="{Binding Status}" Header="Status" />
<controls:GridViewDataColumn Header="Wydaj">
<controls:GridViewDataColumn.CellTemplate>
<DataTemplate>
<controls:RadButton Content="Wydaj"
Command="{Binding Source={StaticResource Locator},Path=PrzeszukiwanieBazyViewModel.WydajCommand}"
CommandParameter="qwerty"></controls:RadButton>
</DataTemplate>
</controls:GridViewDataColumn.CellTemplate>
</controls:GridViewDataColumn>
</controls:RadGridView.Columns>
</controls:RadGridView>
,當我在選擇行單擊按鈕,我想在這個變化領域的 「狀態」記錄。我唯一的想法是獲得選定的行CommandParameter。我該如何實現這個目標?如何在VM中編寫「Wydaj()」函數?
它工作正常,大THX; ) – user3045261
啊,好!我正要說,McGarnagle似乎有更好的答案,因爲我不知道Telerik DelegateCommand。但是,如果這樣做,那麼'nuff說。 –