直接从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}"

我已经不再需要事件处理程序方法了。

10-08 03:32