The problem with the ValueConverter approach is that you're baking the UI look into the ValueConverter. This is far from ideal. Using a trigger as part of the DataTemplate when templating the ExampleItemClass removes the need for the converter and puts all the code relating to the look of the item in one place. Any further changes required for a "disabled" item are then simply additional Setter elements inside the DataTrigger, and not additional ValueConverter classes:

Code:
<Window x:Class="WpfTestBed.Window3"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:WpfTestBed="clr-namespace:WpfTestBed"
        Title="Window3" Height="300" Width="300">
    <Window.Resources>
        <DataTemplate DataType="{x:Type WpfTestBed:ExampleItemClass}">
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Disabled}" Value="True">
                    <Setter Property="Control.Foreground" Value="Gray" />
                </DataTrigger>
            </DataTemplate.Triggers>
            <TextBlock Text="{Binding ExampleTitle}" />
        </DataTemplate>
    </Window.Resources>
    
    <Grid>
        <ListBox>
            <ListBox.Items>
                <WpfTestBed:ExampleItemClass ExampleTitle="Not Disabled" Disabled="False" />
                <WpfTestBed:ExampleItemClass ExampleTitle="Disabled" Disabled="True" />
            </ListBox.Items>
        </ListBox>
    </Grid>
</Window>