If you don't specify a width or height of the ellipse, the default values will be "Auto". Combined with the default HorizontalAlignment/VerticalAligment values of "Stretch", this should cause the ellipse to "stretch" to the width and height of its container (with constant stroke thickness).
The *ContentAlignment properties of the parent container may affect this behavior, but again, the default, unset values should give you the behavior you want.
Edit: revising my suggestion because I did not realized the ellipse must remain a circle (don't worry, I've decided to pick up a copy of "Reading for Comprehension").
I suggest you bind the width and height properties of the ellipse to a MultiBinding of the parent container's ActualWidth and ActualHeight properties. Then implement a "multi-value converter" that will return the minimum value from the multi-binding.
So the converter might look like this:
class MinimumValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return values.Cast<double>().Min();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
And the ellipse properties could be bound like this:
<Window.Resources>
<l:MinimumValueConverter x:Key="MinimumValueConverter" />
</Window.Resources>
<Ellipse Stroke="Black" StrokeThickness="1">
<Ellipse.Width>
<MultiBinding Converter="{StaticResource MinimumValueConverter}">
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UIElement}}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UIElement}}" Path="ActualHeight" />
</MultiBinding>
</Ellipse.Width>
<Ellipse.Height>
<MultiBinding Converter="{StaticResource MinimumValueConverter}">
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UIElement}}" Path="ActualWidth" />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UIElement}}" Path="ActualHeight" />
</MultiBinding>
</Ellipse.Height>
</Ellipse>