WPF GridView hat standardmäßig AutoGenerateColumns
, dh true
. Dies bewirkt, dass das GridView Header basierend auf der Klasse generiert.Generieren von GridView-Kopfzeilen automatisch von der Schnittstelle statt der Klasse
Ich möchte diese Funktion verwenden, aber WPF auf Eigenschaften in einer Schnittstelle statt der Klasse einschränken.
Im unteren Beispiel sehen Sie zwei Eigenschaften. CanBeSeen
ist derjenige, der gesehen werden sollte. Other
ist die Eigenschaft, die nicht Teil der Schnittstelle ist und daher ausgeblendet werden sollte.
Kann dies getan werden?
XAML:
<Window x:Class="Stackoverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="auto" Width="auto">
<Grid>
<DataGrid x:Name="Gridly" ItemsSource="{Binding GridlyItemsSource}" />
</Grid>
</Window>
xaml.cs
using System.Collections.Generic;
using System.Windows;
namespace Stackoverflow
{
public interface IGridlyViewModel
{
int CanBeSeen { get; }
}
public class ModelData :IGridlyViewModel
{
#region IGridlyViewModel
public int CanBeSeen { get { return 42; } }
#endregion
public int Other { get { return 9001; } }
}
public partial class MainWindow : Window
{
public IEnumerable<IGridlyViewModel> GridlyItemsSource { get { return new[] { new ModelData() }; } }
public MainWindow()
{
this.DataContext = this;
InitializeComponent();
}
}
}
Ausgang:
Ja, das ist möglich. Sie können eine AttachedProperty/Behavior für diese spezifizierende Schnittstelle als Eingabe schreiben und reflection verwenden. Ich werde das heute tun. Interessant! – AnjumSKhan