直接从Silverlight 4工具包中获取的示例-示例源代码。
我们为AutoCompleteBox提供了一种样式,使其类似于组合框:
<ControlTemplate TargetType="input:AutoCompleteBox">
<Grid Margin="{TemplateBinding Padding}">
...
Click="DropDownToggle_Click">
现在,在他们的示例中,他们在代码的后面有一个click事件处理程序(下面列出),但是我试图在xaml中定义此方法(即,我不希望在文件后面有代码)
private void DropDownToggle_Click(object sender, RoutedEventArgs e)
{
FrameworkElement fe = sender as FrameworkElement;
AutoCompleteBox acb = null;
while (fe != null && acb == null)
{
fe = VisualTreeHelper.GetParent(fe) as FrameworkElement;
acb = fe as AutoCompleteBox;
}
if (acb != null)
{
if (string.IsNullOrEmpty(acb.SearchText))
{
acb.Text = string.Empty;
}
acb.IsDropDownOpen = !acb.IsDropDownOpen;
}
}
这可能吗 ?
最佳答案
我用以下内容替换了整行(从Click = ...开始);
IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsDropDownOpen, Mode=TwoWay}"
我已经不再需要事件处理程序方法了。