Прежде всего, я прошу прощения, если этот вопрос был задан ранее.Я немного поискал в Google, но я не совсем уверен, какие правильные ключевые слова используются, чтобы найти то, что я ищу.
В принципе, моя проблема проста для понимания.У меня есть проект Silverlight и в MainPage.xaml я объявил UserControl и дал ему высоту и ширину.
<Grid>
<control:AlarmButton Height="50" Width="50" />
</Grid>
Теперь в AlarmButton у меня есть кнопка, которая имеет свой собственный шаблон управления, который установлентак, как я хочу.Прямо сейчас в нем есть ведущий контента.
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="Alarms.AlarmButton">
<UserControl.Resources>
<ControlTemplate x:Key="StatusButton" >
<Viewbox Stretch="Fill">
<Grid>
<Path x:Name="Base" StrokeThickness="1.0" Stroke="#ff000000" StrokeMiterLimit="1.0" Fill="#ff666666" Data="F1 M 99.500,99.500 L 0.500,99.500 L 0.500,0.500 L 99.500,0.500 L 99.500,99.500 Z"/>
<Path x:Name="Interior" Opacity="0.5" StrokeThickness="1.0" Stroke="#ff191919" StrokeMiterLimit="1.0" Data="F1 M 97.500,97.500 L 2.500,97.500 L 2.500,2.500 L 97.500,2.500 L 97.500,97.500 Z">
<Path.Fill>
<LinearGradientBrush MappingMode="Absolute" StartPoint="2.500,2.499" EndPoint="97.500,97.499">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.00" Color="#3FFFFFFF"/>
<GradientStop Offset="0.151" Color="Transparent"/>
<GradientStop Offset="1.00" Color="#BFFFFFFF"/>
<GradientStop Color="#53FFFFFF" Offset="0.655"/>
</LinearGradientBrush.GradientStops>
<LinearGradientBrush.Transform>
<MatrixTransform Matrix="1.000,0.000,-0.000,-1.000,0.000,100.000" />
</LinearGradientBrush.Transform>
</LinearGradientBrush>
</Path.Fill>
</Path>
<Path x:Name="LargeShader" Opacity="0.1" Fill="#ffffffff" Data="F1 M 94.667,18.667 L 94.667,94.667 L 6.333,94.667 C 6.333,94.667 94.667,67.348 94.667,18.667 Z"/>
<Path x:Name="SmallShader" Opacity="0.1" Fill="#ffffffff" Data="F1 M 94.667,43.667 L 94.667,94.667 L 20.333,94.667 C 20.333,94.667 94.667,76.334 94.667,43.667 Z"/>
<ContentPresenter x:Name="contentPresenter" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</Viewbox>
</ControlTemplate>
</UserControl.Resources>
<Grid >
<Button Template="{StaticResource StatusButton}" >
<TextBlock Text="this is a text box"
TextTrimming="WordEllipsis" />
</Button>
</Grid>
</UserControl>
Позже я собираюсь связать свойство Text с DependencyProperty, чтобы использовать эту кнопку с несколькими текстами.Что я хочу сделать, так это то, что если текст слишком большой, он будет его эллипсировать, и у него не будет смены блока или переполнения текстового блока.Мне просто нужно привязать высоту и ширину TextBlock к некоторым значениям, чтобы содержать его.
Мой вопрос таков;Возможно ли для TextBlock привязать его высоту и ширину к значениям, как объявлено в MainPage.xaml?Или это сложнее, чем я себе представляю?Есть ли лучший способ сделать это?
РЕДАКТИРОВАТЬ
Это может дать немного больше информации о том, что я пытаюсь сделать.Это моя "кнопка" с изменениями РобСиклоса
![button](https://i.stack.imgur.com/82xuh.jpg)