【发布时间】:2023-03-13 04:58:01
【问题描述】:
我是 silverlight 新手,我的任务是将数据网格 TextColumns 更改为自动完成框。我认为这应该相当简单,但显然不是。
我可以从数据网格外部的列表中绑定数据,但不能从内部绑定。
我已经研究了两天,我发现的所有内容似乎都包含数据库中的数据,或者对于我的新手大脑来说太复杂了。
我真正需要的只是一个简单的示例和说明如何在数据网格中执行此操作而不是常规操作。
我的代码如下。它构建成功,但无法正常工作。
我相信这是许多其他人一定遇到过的问题。
感谢任何人的意见, 提前致谢。 d.
<UserControl xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" x:Class="AccordionAutoCompleteBox.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"
mc:Ignorable="d"
d:DesignHeight="680" d:DesignWidth="1240">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel VerticalAlignment="Center">
<toolkit:AccordionItem x:Name="AccordionItem2" FontSize="12" Background="LightBlue" BorderBrush="Wheat" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsSelected="False" MaxHeight="400">
<sdk:DataGrid Name="AccordionGrid" ItemsSource="{Binding ExpData}" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HeadersVisibility="All" BorderThickness="1" Margin="8" SelectionMode="Single" Canvas.ZIndex="-1" MaxHeight="360">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Exp">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<sdk:AutoCompleteBox x:Name="AutoCompGrid" Text="{Binding Exp, Mode=TwoWay}" ItemsSource="{Binding Exp}" IsTextCompletionEnabled="True" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Header="Exp" Binding="{Binding Exp}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Desc" Binding="{Binding Desc}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Prod" Binding="{Binding Prod}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Source" Binding="{Binding Source}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Start" Binding="{Binding Start}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Reset" Binding="{Binding Reset}" IsReadOnly="False" />
<sdk:DataGridTextColumn Header="Amt" Binding="{Binding Amt}" IsReadOnly="False" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</toolkit:AccordionItem>
<sdk:AutoCompleteBox x:Name="AutoCompGrid2" Text="{Binding Exp}" ItemsSource="{Binding Exp}" IsTextCompletionEnabled="False" />
</StackPanel>
</Grid>
以及背后的代码
namespace AccordionAutoCompleteBox
{ 公共部分类 MainPage : UserControl { 公共主页() { 初始化组件();
List<ExpData> myList = new List<ExpData>
{
new ExpData
{Exp = "cell 1",
Desc = "cell 2",
Prod = "cell 3",
Source = "cell 4",
Start = "cell 5",
Amt = "cell 6",
Reset = "cell 7"},
new ExpData
{Exp = "cell 8",
Desc = "cell 9",
Prod = "cell 10",
Source = "cell 11",
Start = "cell 12",
Amt = "cell 13",
Reset = "cell 14"}
};
AccordionGrid.ItemsSource = myList;
AutoCompGrid2.ItemsSource = myList;
this.AccordionItem2.Header = " Accordion Header ";
}
}
public class ExpData
{
public String Exp { get; set; }
public String Desc { get; set; }
public String Prod { get; set; }
public String Source { get; set; }
public String Start { get; set; }
public String Reset { get; set; }
public String Amt { get; set; }
public ExpData(String exp, string desc, string prod, string source, string start, String reset, String amt)
{
Exp = exp;
Desc = desc;
Prod = prod;
Source = source;
Start = start;
Reset = reset;
Amt = amt;
}
public override string ToString()
{
return Exp;
}
【问题讨论】:
-
您将自动完成框的 itemssource 绑定到与文本相同的属性。您是否尝试获取所有 Exp 值的列表并让用户从中进行选择?
-
是的,布莱恩特,这正是我
m trying to do. Ive 尝试了很多方法,我似乎只能像上面那样建立联系。我在过去两天所做的所有研究都给了我一些答案,但到目前为止没有任何效果。
标签: silverlight