為支援右鍵魔法選單,對 QXIcon 進行兩項關鍵增強:自適應 ToolTip 樣式與新增 IconTypes.Highlights 模式。
ToolTip 背景根據文字長寬自動調整,採用 40% 透明度黑色圓角矩形:
public string Tip {
get { return Details.Text; }
set {
Details.Text = value;
DialogBack.Width = Details.ActualWidth + 10;
DialogBack.Height = Details.ActualHeight + 10;
}
}
XAML 定義:
<ToolTipService.ToolTip>
<ToolTip>
<ToolTip.Template>
<ControlTemplate>
<ContentPresenter Content="{TemplateBinding Content}"/>
</ControlTemplate>
</ToolTip.Template>
<ToolTip.Content>
<Canvas x:Name="Dialog">
<Rectangle x:Name="DialogBack" Fill="Black" RadiusX="7" RadiusY="7"
Stroke="Gray" StrokeThickness="2" Opacity="0.4" />
<TextBlock x:Name="Details" Foreground="Snow" TextWrapping="Wrap" Width="150" Canvas.Left="5" Canvas.Top="5" />
</Canvas>
</ToolTip.Content>
</ToolTip>
</ToolTipService.ToolTip>
public class Magic {
public int Code { get; set; } // 代號
public int Level { get; set; } // 等級
public string Name { get; set; } // 名稱含描述
}
List availableMagic = new List();
// 初始化 6 種魔法,每種 9 級
availableMagic.Clear();
for (int i = 0; i < 6; i++) {
availableMagic.Add(new Magic() {
Code = i,
Level = 9,
Name = string.Format("名稱:{0}\r\n描述:{1}",
Super.GetXElement(Data.Settings["Arguments"], "Magic", "Code", i.ToString()).Attribute("Name").Value,
Super.GetXElement(Data.Settings["Arguments"], "Magic", "Code", i.ToString()).Attribute("Description").Value)
});
}
魔法資料來源為 XML 設定檔,包含名稱與描述兩層資訊,支援多語系擴充。
引用 System.Windows.Controls.Toolkit.dll (112KB) 獲得 WrapPanel,源自 CodePlex 開源專案。除 WrapPanel 外還包含其他控件,為後續開發預留擴充空間。