आप एक DataGridTemplateColumn कुछ चलाता के साथ संयुक्त इस कार्यक्षमता को प्राप्त करने के लिए उपयोग कर सकते हैं:
इस देखें।
यह एक डेमो एप्लिकेशन है जो डेटाग्रिड को (स्ट्रिंग) नियंत्रण प्रकारों की सूची में बांधता है। पहला कॉलम केवल नियंत्रण प्रकार स्ट्रिंग प्रदर्शित करता है, और दूसरा कॉलम इसी नियंत्रण पर संबंधित नियंत्रण प्रस्तुत करने के लिए कार्य करता है। आप XAML में थोड़ा और अधिक संक्षिप्त बनाने के लिए सक्षम हो सकता है, लेकिन यह यह की jist है:
XAML:
<Window x:Class="DataGridWithMultipleTypesPerColumn.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid ItemsSource="{Binding ControlTypes}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Control Type" Binding="{Binding}"/>
<DataGridTemplateColumn Header="Actual Control">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="TextBox">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="Default Text"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="CheckBox">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Content="Check Box"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="Button">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Button Content="Button"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
कोड-पीछे और देखें मॉडल:
namespace DataGridWithMultipleTypesPerColumn
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModel();
}
}
public class ViewModel
{
public ObservableCollection<string> ControlTypes
{
get;
private set;
}
public ViewModel()
{
ControlTypes = new ObservableCollection<string>() { "Button", "TextBox", "CheckBox" };
}
}
}
धन्यवाद लड़का, मैं इसे अभी कर सकता हूं। मुझे एक निर्देश मिला जो समझने में काफी आसान है: http://code.msdn.microsoft.com/mag201104DataPoints। मैं अभी तक आपके निर्देश की कोशिश नहीं करता, लेकिन ऐसा लगता है। – kidgu
यह नियंत्रण के लिए बाध्यकारी डेटा के साथ कैसे काम करेगा जो हम गतिशील रूप से चुन रहे हैं? – bgura
हम इस मामले में बाध्यकारी काम कैसे कर सकते हैं? उदाहरण के लिए, आपके पास यह है: <टेक्स्टबॉक्स टेक्स्ट = "डिफ़ॉल्ट टेक्स्ट" />, लेकिन हम टेक्स्ट प्रॉपर्टी को किसी चीज़ से कैसे बांध सकते हैं? समस्या यह है कि टेक्स्टबॉक्स में डेटाकॉन्टेक्स्ट नहीं है और यह माता-पिता के डेटाकॉन्टेक्स्ट को नहीं देखता है। – nightcoder