UserControlで幅/高さを指定しないようにしてみてください。内部でホストされているコントロールに適合する必要があります。
<UserControl x:Class="MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBlock x:Name="TextBlock1" Text="DisplayName Goes Here" />
<local:TimeIntervalControl x:Name="TimeInterval" />
</StackPanel>
</UserControl>
もう1つのオプションは、IValueConverterを使用して、より重いリフティングを実行することです。
<UserControl x:Class="MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<local:MaxValueConverter x:Key="MaxValue" />
</UserControl.Resources>
<UserControl.Width>
<MultiBinding Converter="{StaticResource MaxValue}">
<Binding Path="ActualWidth" ElementName="TextBlock1" />
<Binding Path="ActualWidth" ElementName="TimeInterval" />
</MultiBinding>
</UserControl.Width>
<StackPanel>
<TextBlock x:Name="TextBlock1" Text="DisplayName Goes Here" />
<local:TimeIntervalControl x:Name="TimeInterval" />
</StackPanel>
</UserControl>
MaxValueConverterの重労働:
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values == null)
{
return Binding.DoNothing;
}
return values.Max(obj => (obj is double) ? (double)obj : 0.0);
}