با سلام و خسته نباشید...
ببخشید می خواستم بدونم چجوری می تونم توی listviw که توی wpf طراحی کردم یک دکمه قرار بدم و از اون دکمه تو هر رکوردی که توی لیست ویو می سازم یک دکمه بسازم و تمامی دکمه های ساخته شده در لیست ویو همشون یک روال خاص رو اجرا کنند
Printable View
با سلام و خسته نباشید...
ببخشید می خواستم بدونم چجوری می تونم توی listviw که توی wpf طراحی کردم یک دکمه قرار بدم و از اون دکمه تو هر رکوردی که توی لیست ویو می سازم یک دکمه بسازم و تمامی دکمه های ساخته شده در لیست ویو همشون یک روال خاص رو اجرا کنند
بسم الله الرحمن الرحیم.
سلام.
شما باید از Template ها استفاده کنید.به این صورت که یک آیتم لیست رو Custom و به صورت شخصی طراحی کنید.
این نمونه به شما کمک خواهد کرد:
کد:<Grid>
<ListView Margin="10" Name="lvUsers">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
<GridViewColumn Header="Mail" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Mail}" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Delete">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Foreground="Red" Command="{Binding DeleteCommand}" CommandParameter="{Binding}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
کد:public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<User> items = new List<User>();
RelayCommand<User> deleteCommand = new RelayCommand<User>((user) =>
{
items.Remove(user);
ICollectionView view = CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);
view.Refresh();
});
items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", DeleteCommand = deleteCommand });
items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", DeleteCommand = deleteCommand });
items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com", DeleteCommand = deleteCommand });
lvUsers.ItemsSource = items;
}
}
public class RelayCommand<T> : ICommand
{
#region Constructors
public RelayCommand(Action<T> execute)
: this(execute, null) { }
public RelayCommand(Action<T> execute, Predicate<T> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
#endregion
#region ICommand Members
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return _canExecute != null ? _canExecute((T)parameter) : true;
}
public void Execute(object parameter)
{
if (_execute != null)
_execute((T)parameter);
}
public void OnCanExecuteChanged()
{
CanExecuteChanged(this, EventArgs.Empty);
}
#endregion
private readonly Action<T> _execute = null;
private readonly Predicate<T> _canExecute = null;
}
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public string Mail { get; set; }
public RelayCommand<User> DeleteCommand { get; set; }
}