3
我很喜歡UWP的東西。我正在嘗試創建動態漢堡菜單。 我能創造PrimaryButtons元素,並作爲espected結合它在XAML工作:UWP模板10創建一個動態的漢堡包菜單
var loginButton = new HamburgerButtonInfo();
loginButton.ClearHistory = true;
loginButton.PageParameter = "";
loginButton.PageType = typeof(Views.Login);
var stackPanel = new StackPanel { Orientation = Orientation.Horizontal };
stackPanel.Children.Add(new SymbolIcon { Symbol = Symbol.Contact, Width = 48, Height = 48 });
stackPanel.Children.Add(new TextBlock { Text = "Login", VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(12, 0, 0, 0) });
loginButton.Content = stackPanel;
但我希望有一個更清潔的解決方案,所以我試圖擴大HamburgerButtonInfo類:
class MenuItem : HamburgerButtonInfo
{
private Symbol symbol;
private String text;
StackPanel stackpanel = new StackPanel { Orientation = Orientation.Horizontal };
TextBox textbox = new TextBox { VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(12, 0, 0, 0) };
SymbolIcon symbolicon = new SymbolIcon { Width = 48, Height = 48 };
public MenuItem():base()
{
StackPanel.Children.Add(symbolicon);
StackPanel.Children.Add(textbox);
this.Content = StackPanel;
}
public String Text
{
get { return text; }
set {
textbox.Text = value;
Set(ref text, value);
}
}
public StackPanel StackPanel
{
get { return stackpanel; }
}
public Symbol Symbol
{
get { return symbol; }
set {
symbolicon.Symbol = value;
Set(ref symbol, value);
}
}
}
全部放在一起,我期望能獲得相同的結果:
PrimaryButtons.Add(loginButton);
PrimaryButtons.Add(new MenuItem() { PageType=typeof(Views.Login), PageParameter="", ClearHistory=true, Text="Login", Symbol=Symbol.Contact });
但這裏的結果
我錯過了什麼嗎?這是該方案的正確方法嗎?
感謝您的幫助!正如你在第一個代碼片段中看到的,我已經有幸添加了一個編寫代碼的按鈕。我的目標是添加相同的按鈕,擴展HaburegerButtonInfo類,添加缺少的堆棧面板。 – thepasto
按鈕的內容屬性可以容納任何你喜歡的東西。您正在嘗試創建的內容目前尚未內置到Template10中。你有點讓它工作。你應該去GitHub並請求一個新的ButtonTypes.Content被添加到HamButtonInfo.CuttonType中。 –