0

私はSharePointからリストを作成し、このリストからハイパーリンクを収集します。テキストボックスをハイパーリンクのようにしたいので、このハイパーリンクを開くためにマウスダウンでイベントを追加しました。私の懸念は、送信者の背後にあるコードでこのハイパーリンクを収集する方法です。今のところ、ツールチップでこのハイパーリンクを非表示にしているだけですが、これを別の方法で管理できるかもしれません。どんな提案でも喜んでいただければ幸いです。これまでのところ、コードビハインドでこのツールチップを取得する方法がわかりません。ありがとう

私の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); 
    } 

どうもありがとう、

4

2 に答える 2

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;
} 

よりエレガントなアプローチは、ButtonHyperlinkまたは を公開するものを使用してCommand、実行したいアクションを実行するビューモデルのコマンドに「クリック」アクションをバインドできるようにすることです。

于 2012-04-11T15:13:41.213 に答える
0

通常、どこかに侵入したいデータをタグ属性に貼り付けます。

 <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;
    }
} 
于 2012-04-11T15:14:21.700 に答える