【问题标题】:Bing WPF Pushpin control cuts off Content必应 WPF 图钉控件切断内容
【发布时间】:2014-05-24 02:22:58
【问题描述】:

尝试选项 1

如何使图钉的内容溢出图钉图标。看来我只能显示适合图钉的非常小的文本。我试过简单地将内容值设置为文本,创建一个 TextBlock 并将 TextBlock 设置为内容,但都产生相同的结果。

pushpin.Background = new SolidColorBrush(Colors.Yellow);
pushpin.Foreground = new SolidColorBrush(Colors.Black);
TextBlock ppContent = new TextBlock();
//ppContent.TextWrapping = TextWrapping.WrapWithOverflow;
ppContent.Text = "heyyyyyyyy yyyyyyyyy";
ppContent.Width = 333;
ppContent.Height = 333;
pushpin.Content = ppContent ;
pushpin.Tag = pinLabel;
pushpin.Location = location;

如上图所示,文字被截断了!

尝试选项 2

我尝试的另一条路线是定义ControlTemplate。通过在Application.Resources中定义ControlTemplate,我可以成功让ControlTemplate显示新图标没问题:

    <ControlTemplate x:Key="PushPinTemplate">
        <Grid>

            <TextBlock Name="textBlock1" Text="{Binding  Content}" Grid.Column="0" Grid.Row="0" Foreground="Black"></TextBlock>
            <Rectangle Width="10" Height="10" Margin="0 35 0 0">
                <Rectangle.Fill>
                    <ImageBrush ImageSource="pack://application:,,,/Images/DragHandleWhite.gif"/>

                </Rectangle.Fill>
            </Rectangle>
        </Grid>
    </ControlTemplate>

并像这样应用模板;

pushpin.Template = (ControlTemplate)Application.Current.Resources["PushPinTemplate"];

现在的问题是,我无法从后面的代码访问 textBlock1 以将值设置为“heyyyyyyyy yyyyyyyyy”。

非常感谢任何帮助,我已经被这个问题困扰了很长时间:(

【问题讨论】:

    标签: c# wpf controltemplate bing-maps


    【解决方案1】:

    对于选项二:将 TextBlock 的 Text 绑定更改为

    Text="{TemplateBinding  Content}"
    

    然后只需更改图钉的 Content 属性即可更改文本。

    编辑: 确保您的 ControlTemplate 设置了正确的 TargetType。在您的情况下,它应该是图钉。在您的 XAML 中,您需要添加其他命名空间映射(其中显示 xmlns):

    xmlns:maps="clr-namespace:Microsoft.Maps.MapControl.WPF";assembly=Microsoft.Maps.MapControl.WPF"
    

    那么你的 TargetType 应该是

    TargetType="maps:Pushpin"
    

    【讨论】:

    • 执行此操作时,我收到错误消息:错误 1 ​​无法在类型“Control”上找到静态成员“ContentProperty”。
    • 编辑了我的答案。我相信您需要在 ControlTemplate 上设置 TargetType
    • 我假设它是图钉,但是当我将其设置为类型时,我得到类型引用找不到名为“pushpin”的公共类型
    • 确保添加了将命名空间映射到的任何内容。以我的回答为例。你的名字可能/将与我的不同
    • 我添加了对名为“Microsoft.Maps.MapControl.WPF”的 dll 的引用,但是当我尝试“Microsoft.Maps.MapControl.WPF.Pushpin”时,它不会编译。说找不到名为“Microsoft.Maps.MapControl.WPF.Pushpin”的公共类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多