I’ve been using Windows Forms for years, but I’m relatively new to WPF. I have a number of radio buttons without labels (the labels are at the top of the column, don’t worry about them! This program is going to run on a tablet so I want to make the hit area for the radio buttons as large as possible. I also need the radio buttons to be in the center of their column and row.
I can get the look I want by adding this to each column of my grid:
<Label Name="connectedLabel" Grid.Column="2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<RadioButton x:FieldModifier="private" Name="connectedRadioButton" Grid.Column="2" Checked="otherRadioButton_CheckedChanged" Unchecked="otherRadioButton_CheckedChanged"></RadioButton>
</Label>
Which just centers a radio button within a label that fills the grid section.
Obviously the behaviour is all wrong though (events don’t pass through, you can select multiple radiobuttons on the same row, etc.).
This would be cake in Winforms, I’m hoping there’s a simple solution in WPF.
Can anybody help?
Edit: The orange area is the default hit area for the radio button, the green area is the hit area I want. So far this is looking impossible without a lot of custom wiring

Edit per new image in question.
If you don’t mind the extra typing you can use this:
This works as expected in my little test app of:
Which looks like:
(Obviously you will want to use the third method provided)
I know this doesn’t look like much, but it gives you your result. Again, excuse the extra typing and the lack of coding standards used.
For this, the mouse hover-over won’t give the visual effect, but the hit-test is valid. I assume this will be OK so long as this will be on a tablet and you don’t track fingers.
If you just want the control to be of larger size you could use the following methods
You can resize a control by setting the
RenderTransformproperty to aScaleTransformobject.Resize all
RadioButtonobjects within a container (Window, Page, Grid etc)Or all with key
Usage:
Or individually
If however you want to use a combination of larger control and larger hit area (or just larger hit area for all controls of a set type), you can use:
Or just use the default behaviour of the control inside another container, and use the
HorizontalAlignment="Stretch"property, this will however draw the control in the upper-left corner I believe.