나는 항목 모음에서 임의의 항목을 선택하고 '추가'단추를 클릭하여이 텍스트 문자열을 목록 상자 또는 데이터 격자에 추가 할 수있는 시나리오를 작성하려고합니다. 또한 '제거'버튼을 클릭하여 목록 상자 또는 DataGrid에서 항목을 제거 할 수 있어야합니다. 나는 이것을 시작했으나 문제를 일으켜서 작동하게 만들었다. 문제가 뭔지 궁금합니다. 어떤 아이디어든지 높게 평가된다. 고맙습니다!AutoCompleteBox에서 선택한 항목을 ListBox 또는 Datagrid에 추가하는 방법은 무엇입니까?
XAML : 뒤에
<UserControl
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
x:Class="AutoCompleteBoxSimpleTest.MainPage"
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"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
mc:Ignorable="d" >
<StackPanel x:Name="LayoutRoot" Background="White" Width="150">
<TextBlock Text="{Binding ElementName=MyAutoCompleteBox, Path=SelectedItem, TargetNullValue='No item selected', StringFormat='Selected Item: {0}'}" />
<sdk:AutoCompleteBox x:Name="MyAutoCompleteBox" IsTextCompletionEnabled="True" ItemsSource="{Binding Items}" />
<Button x:Name="AddButton" Click="AddButton_Click" Content="AddButton" />
<Button x:Name="RemoveButton" Click="RemoveButton_Click" Content="RemoveButton" />
<ListBox x:Name="ListBox" BorderThickness="0" SelectionMode="Multiple" />
<sdk:DataGrid x:Name="dgEditPackageProperties_ADEntities">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn x:Name="dgtcEditPackageProperties_Icon"/>
<sdk:DataGridTextColumn x:Name="dgtcEditPackageProperties_Entities" Header="AD Entities with Access" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</StackPanel>
코드 : 대신 목록 <의 myDataList에 대한 ObservableCollection에 <>를 사용하는 경우 우선 들어
public partial class MainPage : UserControl
{
private IList<string> myDataList = null;
string currentItemText;
public IList<string> Items
{
get;
private set;
}
public MainPage()
{
InitializeComponent();
Items = new List<string>();
Items.Add("One");
Items.Add("Two");
Items.Add("Three");
Items.Add("Four");
DataContext = this;
}
private void AddButton_Click(object sender, RoutedEventArgs e)
{
if (MyAutoCompleteBox.SelectedItem != null)
{
foreach (var item in MyAutoCompleteBox.SelectedItem)
{
ListBox.Items.Add(item);
myDataList.Remove(item);
}
ApplyDataBinding();
}
}
private void RemoveButton_Click(object sender, RoutedEventArgs e)
{
if (ListBox.SelectedItems != null)
{
int count = ListBox.SelectedItems.Count - 1;
for (int i = count; i >= 0; i--)
{
//myDataList.Add(ListBox.SelectedItems[i]);
ListBox.Items.Remove(ListBox.SelectedItems[i]);
}
ApplyDataBinding();
}
}
private void ApplyDataBinding()
{
MyAutoCompleteBox.ItemsSource = null;
MyAutoCompleteBox.ItemsSource = myDataList;
}
}
아이디어에 감사드립니다. 예, myDataList를 만들지 않았습니다. 코드를 수정하여 실수로 남겼습니다. 나는 관찰 가능한 수집으로 바꾸려고 노력할 것이다. 바라건대, 나는 그것을 효과가있게 만들 것이다. – vladc77
실용적인 샘플을 가르쳐 주실 수 있는지 궁금합니다. 나는 그것을 작동하게하는 데 어려움이있다. 다시 감사합니다. – vladc77