我創建類,從窗口繼承和我正在申請控制模板將其:尋找控制在WPF控件模板
public class BaseSearchWindow : Window {
static BaseSearchWindow() {
DefaultStyleKeyProperty.OverrideMetadata(typeof(BaseSearchWindow), new FrameworkPropertyMetadata(typeof(BaseSearchWindow)));
}
public BaseSearchWindow() {
Uri uri = new Uri("/WPFLibs;component/Resources/StyleResources.xaml", UriKind.Relative);
ResourceDictionary Dict = Application.LoadComponent(uri) as ResourceDictionary;
this.Style = Dict["WindowTemplate"] as Style;
}
比我想找到控制模板中的一些控制:
public override void OnApplyTemplate() {
RibbonCommand searchCommand = this.Template.FindName("searchCommand", this) as RibbonCommand;
//doesn't work, searchCommand is null
searchCommand.CanExecute += CanExecuteRibbonCommand;
}
但它是無效的。 我在繼承類中嘗試過它,它可以工作,但我希望它在我的基類中,所以我不必每次使用該類時都要搜索它。 這工作:
public partial class MainWindow : BaseSearchWindow {
public MainWindow() {
InitializeComponent();
RibbonCommand searchCommand = this.Template.FindName("searchCommand", this) as RibbonCommand;
searchCommand.CanExecute += CanExecuteRibbonCommand;
}
我已經試過了,不起作用,儘管它應該,至少在理論上。 – Vale 2011-04-07 13:53:16
你可以編輯問題發佈XAML代碼嗎? – 2011-04-07 14:06:14
是的,但不是今天,我現在回家了,我明天一上班就會發布。 – Vale 2011-04-07 14:32:51