У меня есть UserControl, называемый b_StringBoolTemplate, который имеет ListView. Элементы ListView привязаны к его DependencyProperty, который называется Items. ListView имеет два столбца, один для текстового поля, а другой для флажка. Код XAML для UserControl:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="AutoCleaner.b_StringBoolTemplate"
x:Name="b_StringBoolTemplate1"
d:DesignWidth="310" d:DesignHeight="374">
<Grid>
<ListView ItemsSource="{Binding ElementName=b_StringBoolTemplate1, Path= Items}">
<ListView.View>
<GridView>
<GridViewColumn Header="{Binding ElementName=b_StringBoolTemplate1, Path= StringLabel}" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding ElementName=StringBoolInfo, Path=Content}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{Binding ElementName=b_StringBoolTemplate1, Path=BoolLabel}" Width="50" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolValue, ElementName=b_StringBoolInfo}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Name="btnDeleteItem" Content="Delete"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</UserControl>
В выделенном фрагменте кода у меня есть объект с именем b_StringBoolInfo, который наследуется от ListViewItem и имеет два свойства зависимости, называемые StringContent и BoolValue. Я хочу, чтобы Textbox.Text привязывался к StringContent и Checkbox.IsChecked для привязки к BoolValue, поэтому я могу динамически добавлять элементы типа b_StringBoolInfo в UserControl.
Я также не уверен, что мой метод - лучший метод для этого. На всякий случай важно, чтобы связывание заголовков и ItemsSource с Dendency Props работало нормально.
Извините, если я немного расплывчатый. Спасибо за ваши ответы заранее.
Редактировать: Извините, если я не прояснил.
Я добавил элементы типа b_StringBoolInfo в экземпляр UserControl, который находится в окне. Я пытаюсь связать TextBox.Text и Checkbox.IsChecked со свойствами b_StringBool, но не знаю, как.
В коде я написал класс с именем b_StringBoolInfo, который наследуется от ListViewItem:
public class b_StringBoolInfo :ListViewItem
{
public string StringContent
{
get { return (string)GetValue(StringContentProperty); }
set { SetValue(StringContentProperty, value); }
}
// Using a DependencyProperty as the backing store for StringContent. This enables animation, styling, binding, etc...
public static readonly DependencyProperty StringContentProperty =
DependencyProperty.Register("StringContent", typeof(string), typeof(b_StringBoolInfo),new PropertyMetadata("String"));
public bool BoolValue
{
get { return (bool)GetValue(BoolValueProperty); }
set { SetValue(BoolValueProperty, value); }
}
// Using a DependencyProperty as the backing store for BoolValue. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BoolValueProperty =
DependencyProperty.Register("BoolValue", typeof(bool), typeof(b_StringBoolInfo), new PropertyMetadata(true));
}
Я добавил пользовательский элемент управления в окно, xaml под объектом UserControl, который называется b_StringBoolTemplate, и его элементы
<local:b_StringBoolTemplate Margin="64,67,159,145" StringLabel="Folder Location" BoolLabel="Search SubFolders?">
<local:b_StringBoolTemplate.Items>
<local:b_StringBoolInfo StringContent="String" BoolValue="True"/>
</local:b_StringBoolTemplate.Items>
</local:b_StringBoolTemplate>