我有一个来自sharepoint的列表,我从这个列表中收集了一个超链接。 因为我希望我的文本框像一个超链接我已经在mousedown上添加了一个事件来打开这个超链接,我关心的是如何在发送者的代码隐藏中收集这个超链接。 目前我只是在工具提示中隐藏这个超链接,也许我可以管理这个不同的任何建议将非常感激。 我的观点到目前为止,我不知道如何在后面的代码中获得此工具提示。 感谢
我的XAML代码:
<ListBox Name="ListboxTips" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Path=Picture}" Height="20"></Image>
<TextBlock MouseDown="TextBlock_MouseDown_URL" TextDecorations="Underline"
Margin="10,10,20,10" Width="160" TextWrapping="Wrap"
Text="{Binding Path=TitleTip}"
ToolTip="{Binding Path=URL}"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的代码背后:
foreach (SPSClient.ListItem item in TipsList)
{
var tips = new Tips();
tips.TitleTip = item.FieldValues.Values.ElementAt(1).ToString();
tips.App = item.FieldValues.Values.ElementAt(4).ToString();
// get the Hyperlink field URL value
tips.URL = ((FieldUrlValue)(item["LinkDoc"])).Url.ToString();
//should collect the description of the url
//tips.URLdesc = ((FieldUrlValue)(item["LinkDoc"])).Description.ToString();
tips.Picture = item.FieldValues.Values.ElementAt(4).ToString();
colTips.Add(tips);
}
ListboxTips.DataContext = colTips;
...
private void TextBlock_MouseDown_URL(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
//string test = (ToolTip)(sender as Control).ToString();
System.Diagnostics.Process.Start("http://www.link.com");
//System.Diagnostics.Process.Start(test);
}
非常感谢,
答案 0 :(得分:0)
您可以直接进入酒店。它不优雅,但会起作用!
private void TextBlock_MouseDown_URL(object sender, MouseButtonEventArgs e)
{
TextBlock txtBlock = sender as TexBlock;
// just access the property
string url = txtBlock.ToolTip as string;
}
更优雅的方法可能是使用Button
,Hyperlink
或暴露Command
的内容,以便您可以将“点击”操作绑定到视图上的命令执行您希望执行的操作的模型。
答案 1 :(得分:0)
通常你会将你想要侵入的任何数据粘贴到Tag属性。
<TextBlock .. Tag="{Binding Path=URL}" />
这很容易作为公共财产检索:
private void TextBlock_MouseDown_URL(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var tb = sender as TextBlock;
if(tb != null)
{
var neededUrl = tb.Tag;
}
}